[英]return all matches in regex in Python
>>> import re
>>> p=re.compile('(a(.)c)d')
为什么以下内容仅返回“ abcd”而不返回“ aecd”? 如果我要同时退货,我该怎么办? 如果我只想返回aecd
,该怎么办?
>>> m=p.match('abcdeaecd')
>>> m.group()
'abcd'
>>> m.groups()
('abc', 'b')
谢谢!
您可以像这样简化RegEx
import re
p=re.compile(r'a.cd')
并使用re.findall
来获取所有匹配项,像这样
print p.findall('abcdeaecd')
# ['abcd', 'aecd']
否则,您可以使用RegEx本身并像这样遍历匹配项
print [item.group() for item in p.finditer('abcdeaecd')]
# ['abcd', 'aecd']
您将要使用finditer
而不是match
:
ms = p.finditer('abcdeaecd')
for m in ms:
# do something with m.group or m.groups
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.