繁体   English   中英

返回Python中正则表达式中的所有匹配项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM