>>> import re
>>> p=re.compile('(a(.)c)d')
为什么以下只返回'abcd'而不是'aecd'?如果我想两个都回来,我该怎么办?如果我只想归还aecd
,我该怎么办?
>>> m=p.match('abcdeaecd')
>>> m.group()
'abcd'
>>> m.groups()
('abc', 'b')
谢谢!
答案 0 :(得分:2)
您可以像这样简化您的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']
答案 1 :(得分:2)
您需要使用finditer
代替match
:
ms = p.finditer('abcdeaecd')
for m in ms:
# do something with m.group or m.groups