python正则表达式只匹配最后一次出现

时间:2014-01-01 15:40:51

标签: python regex expression

我在为重复的字符串模式实现正则表达式时遇到了一些问题。

>>> re.findall('(\(\w+,\d+\)(?:,)?)+', '(a,b),(c,d),(e,f)')
['(e,f)']

我也希望得到其他项目

帮助真的很适合

1 个答案:

答案 0 :(得分:4)

删除+;您的模式匹配所有次出现,但该组只能捕获一次,您不能以这种方式重复捕获组:

>>> import re
>>> re.findall('(\(\w+,\w+\),?)+', '(a,b),(c,d),(e,f)')
['(e,f)']
>>> re.findall('\(\w+,\w+\),?', '(a,b),(c,d),(e,f)')
['(a,b),', '(c,d),', '(e,f)']

我将\d替换为\w以演示,并删除了逗号周围的冗余非捕获组。最外层的捕获组也是多余的;没有它,re.findall()将返回整个匹配的表达式。