Python的正则表达式模块:重复“反向引用”似乎无法正常工作

斯基德

注意:我正在使用PyPi替代正则表达式模块

我有一个python程序,我在其中查找以逗号分隔的特定格式的重复标签。

格式为:(*单词... *#*数字*)

例如:Trial #1, Trial #2, Run #3,Spring trial #13都适合格式。

我正在使用:([\w ]*#\d\d?,)\1*以原始字符串作为我的正则表达式模式。

在Java和各种正则表达式测试引擎中,findall()在字符串上使用以下模式:

运行#1,运行#1,运行#1,运行#1,运行#1,运行#1,运行#1,运行#2,运行#2,运行#2,运行#2,运行#2,运行# 2,运行#2,运行#3,运行#3,运行#3,运行#3,运行#3,运行#3,运行#3,(...

...)运行#20,运行#20,运行#20,运行#20,运行#20,运行#20,运行#20

返回:

匹配1:运行#1,运行#1,运行#1,运行#1,运行#1,运行#1,运行#1,

比赛2:运行#2,运行#2,运行#2,运行#2,运行#2,运行#2,运行#2,

...等等。

但在python中,它返回:

比赛1:运行#1,

比赛2:运行#2,

...等等。

我希望它返回第一个结果(由Java和其他程序的正则表达式返回的结果)

关于python的regex引擎,我是否有什么忽略的地方?为什么我得到这个结果?

我的代码是:

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()返回的确切内容findall()什么我只是在打印错误的结果时返回想要的内容?)

...是的,我在模式中使用了原始字符串。

维克多·史翠比维

您正在正则表达式中使用捕获组。.finall如果在模式中指定了捕获组,Python将返回捕获文本的元组。因此,您正在寻找一种.finditer功能。

请参阅Pythonre.finditer文档

返回一个迭代器迭代器string的RE模式的所有非重叠匹配上产生MatchObject实例字符串被扫描的左到右,而比赛的顺序返回找到。空匹配项将包括在结果中,除非它们碰到另一个匹配项的开头。

re.findall

string列表形式返回stringpattern的所有非重叠匹配项字符串被扫描的左到右,而比赛的顺序返回找到。如果模式中存在一个或多个组,则返回一个组列表;否则,返回一个列表。如果模式包含多个组,则这将是一个元组列表。

这是一个使用小演示re.finditer

import re
p = re.compile(r'([\w ]*#\d\d?,)\1*')
test_str = "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, (..."
print [x.group() for x in p.finditer(test_str)]

结果:

['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,']

卡西米尔(Casimir)是对的,有了这样琐碎的常规规则,您可以使用常规re模块。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python正则表达式无法正常工作

来自分类Dev

Python:正则表达式无法正常工作

来自分类Dev

正则表达式Python无法正常工作

来自分类Dev

如何在Java正则表达式中使用反向引用正常工作?

来自分类Dev

正则表达式在我的代码中似乎无法正常工作

来自分类Dev

正则表达式无法正常工作.replace()

来自分类Dev

正则表达式负向超前无法正常工作

来自分类Dev

C中的正则表达式无法正常工作

来自分类Dev

正则表达式以匹配#Comment无法正常工作

来自分类Dev

正则表达式匹配无法正常工作

来自分类Dev

Android Studio:正则表达式无法正常工作

来自分类Dev

正则表达式无法正常工作

来自分类Dev

正则表达式无法在PHP中正常工作

来自分类Dev

正则表达式无法正常工作?

来自分类Dev

正则表达式替换词无法正常工作

来自分类Dev

无法使正则表达式正常工作

来自分类Dev

正则表达式无法正常工作

来自分类Dev

PHP正则表达式无法正常工作

来自分类Dev

正则表达式无法正常工作

来自分类Dev

正则表达式在iOS上无法正常工作

来自分类Dev

C中的正则表达式无法正常工作

来自分类Dev

正则表达式匹配无法正常工作

来自分类Dev

正则表达式花括号无法正常工作

来自分类Dev

Android Studio:正则表达式无法正常工作

来自分类Dev

基本正则表达式无法正常工作

来自分类Dev

正则表达式格式无法正常工作

来自分类Dev

正则表达式测试无法正常工作

来自分类Dev

正则表达式无法正常工作C#

来自分类Dev

用正则表达式查找无法正常工作