问题:如何在Python中找到与正则表达式的所有匹配项?
在我编写的程序中,我使用Python re.search()
函数在文本块中查找匹配项并打印结果。但是,一旦找到文本块中的第一个匹配项,程序就会退出。
在找到所有匹配项之前程序不停止的情况下,如何重复执行此操作?是否有单独的功能来执行此操作?
回答 0
使用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']