我在实现一个重复字符串模式的正则表达式时遇到了一些问题。
>>> re.findall('(\(\w+,\d+\)(?:,)?)+', '(a,b),(c,d),(e,f)')
['(e,f)']
我希望也能获取其他物品。
非常感谢您提供的帮助。
我在实现一个重复字符串模式的正则表达式时遇到了一些问题。
>>> re.findall('(\(\w+,\d+\)(?:,)?)+', '(a,b),(c,d),(e,f)')
['(e,f)']
我希望也能获取其他物品。
非常感谢您提供的帮助。
去掉+
;你的模式匹配所有出现,但该分组只能捕获一次出现,不能那样重复一个捕获分组:
>>> 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()
会返回整个匹配的表达式。
f
被\d
匹配到了?我有点怀疑 :-) - Martijn Pieters