Если производительность не является проблемой, просто используйте findall
или list(finditer(...))
, которая возвращает список.
В противном случае, вы можете «заглянуть» в генератор с помощью next
, а затем выполнить цикл как обычно, если он повысит StopIteration
. Хотя есть и другие способы сделать это, для меня это самый простой:
import itertools
import re
pattern = "1"
string = "abc"
matched_iter = re.finditer(pattern, string)
try:
first_match = next(matched_iter)
except StopIteration:
print("No match!") # action for no match
else:
for m in itertools.chain([first_match], matched_iter):
print(m.group())