在我正在编写的程序中,我让Python使用re.search()函数在文本块中查找匹配并打印结果。但是,一旦在文本块中找到第一个匹配项,程序就会退出。

我如何重复这样做,程序不停止,直到找到所有匹配?有没有单独的函数来做这个?


当前回答

请改用re.findall或re.finditer。

Re.findall (pattern, string)返回一个匹配字符串的列表。

re.finditer(pattern, string)返回MatchObject对象的迭代器。

例子:

re.findall( r'all (.*?) are', 'all cats are smarter than dogs, all dogs are dumber than cats')
# Output: ['cats', 'dogs']

[x.group() for x in re.finditer( r'all (.*?) are', 'all cats are smarter than dogs, all dogs are dumber than cats')]
# Output: ['all cats are', 'all dogs are']

其他回答

请改用re.findall或re.finditer。

Re.findall (pattern, string)返回一个匹配字符串的列表。

re.finditer(pattern, string)返回MatchObject对象的迭代器。

例子:

re.findall( r'all (.*?) are', 'all cats are smarter than dogs, all dogs are dumber than cats')
# Output: ['cats', 'dogs']

[x.group() for x in re.finditer( r'all (.*?) are', 'all cats are smarter than dogs, all dogs are dumber than cats')]
# Output: ['all cats are', 'all dogs are']