我正在使用此代码,但是很难找到正确的模式。我可以通过更改re.sub
来实现这一点,但是我想在不使用var = "77777 11111 12891 22222 i"
的情况下进行匹配。
var
我只想从11111
获得ppat = re.findall(r'(77777 (?:[\d]{1,6}))', var)
。就像我的代码一样:
var
我想像这样从22222
到"i"
之前获取opat = re.findall(r'((?:[\d]{1,6}) i)', var)
:
output = "ndescr: XXXX"
如何匹配这两种模式?例如,我要将不同的输出放到变量中,这些变量将与模式匹配?
a。第一种可能的输出是:
XXXX
b。我应该使用什么模式来匹配输出变量出现的output = "% No entries found for the selected source(s)"
和实例,我想只得到没有条目。我应该使用哪种正则表达式模式?
$attrs
谢谢
答案 0 :(得分:1)
虽然不清楚您要匹配的内容,但还是给了我一个机会。
如果您只是想获取第二个和最后一个元素,那么可以不用正则表达式来完成。
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 re
var = "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()
答案 1 :(得分:0)
re.findall("(?<=77777)\\s+(?:\\d{1,6})",var)
re.findall("(?:\\d{1,6})\\s+(?=i)",aa)
您可以阅读python re模块以获取详细信息。 enter link description here