Python 构建正则表达式模式?

我正在处理这段代码,但很难找到正确的模式。我可以通过改变做来实现这一点,re.subre.sub如果可能的话,我想在不使用的情况下进行匹配。

var = "77777 11111 12891 22222 i"
  1. var我只想得到11111. 就像我的代码:

    ppat = re.findall(r'(77777 (?:[\d]{1,6}))', var)
  2. var我想得到这样的22222之前"i"

    opat = re.findall(r'((?:[\d]{1,6}) i)', var)
  3. 我如何匹配这两种模式?例如,我将不同的输出放到与模式匹配的变量中?

一种。第一个可能的输出是:

output = "ndescr:  XXXX"

湾 我应该使用什么模式来匹配XXXX输出变量出现的实例,并且我只想获得No entries。我应该使用什么正则表达式模式?

output = "%  No entries found for the selected source(s)"

谢谢


森栏
浏览 143回答 2
2回答

开满天机

虽然不完全清楚您要匹配什么,但我正在试一试。如果您只是想获取第二个和最后一个元素,那么这可以在没有正则表达式的情况下完成。var = "77777 11111 12891 22222 I"elements = var.split(" ") # Take the string, and split it into a list on spaces.first_number = elements[1] # Get the second element ("11111").second_number = elements[-2] # Get the second element from the end ("22222").或者,如果您真的想使用正则表达式或正在寻找77777像这样的正则表达式后的数字:import revar = "77777 11111 12891 22222 I"# Finds the 5 numbers that follows a "7" repeated 5 times (with a space in between).first_number = re.search("(?<=7{5}\s)\\d{5}", var).group()# Find the 5 numbers that precedes an "I" (with a space in between).second_number = re.search("\\d{5}(?=\sI)", var).group()

倚天杖

re.findall("(?<=77777)\\s+(?:\\d{1,6})",var)re.findall("(?:\\d{1,6})\\s+(?=i)",aa)您可以阅读 python re 模块了解详细信息。&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python