返回Python中正则表达式中的所有匹配项
为什么下面的表达式只返回“abcd”,而不返回“aecd”?如果我想两者都还,我该怎么办?如果我只想返回aecd,我该怎么办返回Python中正则表达式中的所有匹配项,python,regex,Python,Regex,为什么下面的表达式只返回“abcd”,而不返回“aecd”?如果我想两者都还,我该怎么办?如果我只想返回aecd,我该怎么办 >>> import re >>> p=re.compile('(a(.)c)d') 谢谢 您可以简化正则表达式,如下所示 >>> m=p.match('abcdeaecd') >>> m.group() 'abcd' >>> m.groups() ('abc', 'b') i
>>> import re
>>> p=re.compile('(a(.)c)d')
谢谢 您可以简化正则表达式,如下所示
>>> m=p.match('abcdeaecd')
>>> m.group()
'abcd'
>>> m.groups()
('abc', 'b')
import re
p=re.compile(r'a.cd')
print p.findall('abcdeaecd')
# ['abcd', 'aecd']
然后使用re.findall
获取所有匹配项,如下所示
>>> m=p.match('abcdeaecd')
>>> m.group()
'abcd'
>>> m.groups()
('abc', 'b')
import re
p=re.compile(r'a.cd')
print p.findall('abcdeaecd')
# ['abcd', 'aecd']
否则,您可以使用正则表达式本身并像这样迭代匹配
>>> m=p.match('abcdeaecd')
>>> m.group()
'abcd'
>>> m.groups()
('abc', 'b')
import re
p=re.compile(r'a.cd')
print p.findall('abcdeaecd')
# ['abcd', 'aecd']
您可以简化正则表达式,如下所示
>>> m=p.match('abcdeaecd')
>>> m.group()
'abcd'
>>> m.groups()
('abc', 'b')
import re
p=re.compile(r'a.cd')
print p.findall('abcdeaecd')
# ['abcd', 'aecd']
然后使用re.findall
获取所有匹配项,如下所示
>>> m=p.match('abcdeaecd')
>>> m.group()
'abcd'
>>> m.groups()
('abc', 'b')
import re
p=re.compile(r'a.cd')
print p.findall('abcdeaecd')
# ['abcd', 'aecd']
否则,您可以使用正则表达式本身并像这样迭代匹配
>>> m=p.match('abcdeaecd')
>>> m.group()
'abcd'
>>> m.groups()
('abc', 'b')
import re
p=re.compile(r'a.cd')
print p.findall('abcdeaecd')
# ['abcd', 'aecd']
您将希望使用而不是匹配
:
print [item.group() for item in p.finditer('abcdeaecd')]
# ['abcd', 'aecd']
您将希望使用而不是匹配
:
print [item.group() for item in p.finditer('abcdeaecd')]
# ['abcd', 'aecd']
谢谢(1)
p.match
是否只返回第一个匹配项?(2) 如果要返回最后一个匹配项,该怎么办?@Timmatch
尝试从字符串开头匹配模式,并仅返回从开头找到的匹配项。如果字符串的开头不是a
,它就不会匹配anything@Timp.match
仅返回第一个匹配项。但是,这个答案将只返回匹配的字符串,而不会返回匹配的对象;特别是,您将无法访问捕获组。谢谢。(1) p.match
是否只返回第一个匹配项?(2) 如果要返回最后一个匹配项,该怎么办?@Timmatch
尝试从字符串开头匹配模式,并仅返回从开头找到的匹配项。如果字符串的开头不是a
,它就不会匹配anything@Timp.match
仅返回第一个匹配项。但是,这个答案将只返回匹配的字符串,而不会返回匹配的对象;特别是,您将无法访问捕获组。