Как найти все соответствия регулярному выражению в Python?

В программе, которую я пишу, Python использует функцию re.search() для поиска совпадений в блоке текста и печати результатов. Тем не менее, программа выходит, как только находит первое совпадение в блоке текста.

Как это сделать, если программа не останавливается до тех пор, пока не будут найдены совпадения? Есть ли отдельная функция для этого?

Ответ 1

Вместо этого используйте 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']