2024-10-01 09:42:12 发布
网友
我在做一个python正则表达式,有一个工作表达式:
\n(?P<curve>\w+)(?:.+)(?P<unit>\.\S*)(?:\s+.\s+)(?P<desc>:.+)|\n(?P<curve2>\w+)(?:.+)(?P<unit2>\.\S*)|\n(?P<curve3>\w+)
我想知道我可以重复从第一个模式如果,原因是我不想在许多“曲线”或“单位”为每一个情况。在
我的测试数据如下:
这个想法是让MD和RHO也在“曲线”组中。在
假设你的正则表达式是正确的。为此,请使用finditer()方法迭代所有匹配项。在
示例:
for m in re.finditer(r'REGEX_GOES_HERE', text): print m.group('curve') print m.group("unit")
通过这种方式,您选择了所有匹配项,以及它们的named groups都是完整的,如您所愿!在
named groups
我不太清楚你的意思,但以下几点可能会有所帮助:
如果要找到模式的所有匹配项,可以使用re.findall(pattern, string)
re.findall(pattern, string)
它返回匹配项的list。。在
list
re module docs
在正则表达式中没有特殊的语法来避免这种重复,因此在一般情况下,您无法避免一定数量的重复。但是,在您的特定情况下,您应该能够使用可选组来解决您的问题:
\n(?P<curve>\w+)((?:.+)(?P<unit>\.\S*)((?:\s+.\s+)(?P<desc>:.+))?)?
在详细模式下最好写为:
使组嵌套更易于阅读。我还删除了?:组,因为在本例中它们是无用的。在
?:
假设你的正则表达式是正确的。为此,请使用finditer()方法迭代所有匹配项。在
示例:
通过这种方式,您选择了所有匹配项,以及它们的
named groups
都是完整的,如您所愿!在我不太清楚你的意思,但以下几点可能会有所帮助:
如果要找到模式的所有匹配项,可以使用
re.findall(pattern, string)
它返回匹配项的
list
。。在re module docs
在正则表达式中没有特殊的语法来避免这种重复,因此在一般情况下,您无法避免一定数量的重复。但是,在您的特定情况下,您应该能够使用可选组来解决您的问题:
在详细模式下最好写为:
^{pr2}$使组嵌套更易于阅读。我还删除了
?:
组,因为在本例中它们是无用的。在相关问题 更多 >
编程相关推荐