注意:我正在使用PyPi替代的正则表达式模块
我有一个Python程序,我在其中查找特定格式的重复标签,这些标签由逗号分隔。
格式为:(*单词...*#*数字*)
例如:Trial #1,Trial #2,Run #3
和Spring trial #13
都符合该格式。
我在原始字符串中使用:([\w ]*#\d\d?,)\1*
作为我的正则表达式模式。
在Java和各种正则表达式测试引擎中,使用此模式在以下字符串上使用findall()
:
Run #1,Run #1,Run #1,Run #1,Run #1,Run #1,Run #1,Run #2,Run #2,Run #2,Run #2,Run #2,Run #2,Run #2,Run #3,Run #3,Run #3,Run #3,Run #3,Run #3,Run #3, (...
...) Run #20,Run #20,Run #20,Run #20,Run #20,Run #20,Run #20
返回:
匹配 1: Run #1,Run #1,Run #1,Run #1,Run #1,Run #1,Run #1,
匹配 2: Run #2,Run #2,Run #2,Run #2,Run #2,Run #2,Run #2,
...等等。
但在Python中,它返回:
匹配 1: Run #1,
匹配 2: Run #2,
...等等。
我希望它返回第一个结果(由Java和其他程序的正则表达式返回的结果)
我是否忽略了有关Python正则表达式引擎的某些内容? 为什么我会得到这个结果?
我的代码是:
import regex
file = open('Pendulum Data.csv',mode='r')
header1 = file.readline()
header2 = file.readline()
pattern1 = regex.compile(r'([\w ]*#\d\d?)\1*',flags=regex.V0)
header1Match = pattern1.findall(header1)
for x in header1Match:
print(x)
for循环和print语句是用于查看结果的。
(这也带来了另一个问题:regex.findall()
到底返回什么?我只是打印结果的方式不对吗?)
... 是的,我正在使用原始字符串作为我的模式。
re.finditer
而不是re.findall
,因为它将保留所有的组。header1Match = pattern1.finditer(header1) for x in header1Match: print(x.group(0))
。我猜你正在使用([\w ]*#\d\d?,)\1*
正则表达式。 - Wiktor Stribiżewflags=regex.V0
жқҘжЁЎд»ҝreжЁЎеқ—зҡ„иЎҢдёәпјҢеҲҷж— йңҖдҪҝз”ЁжӯЈеҲҷиЎЁиҫҫејҸжЁЎеқ—гҖӮ - Casimir et Hippolyte