Метод finditer на модула re

Методът finditer на модула re връща итератор на всички съвпадения с регулярен израз в низ. В първия параметър на метода посочваме регулярния израз. Във втория параметър задаваме низа, в който търсим. В третия незадължителен параметър може да се зададат флагове. Методът проверява всички съвпадения, като ги търси отляво надясно.

Синтаксис

pythonimport re

re.finditer(регулярен_израз, низ, [флагове])

Пример

Нека намерим всички поднизове с цифри в нашия низ:

pythontxt = 'aaaa 123 bbbb 456'
res = re.finditer('\d+', txt)

print(res)

Резултат от изпълнението на кода:

python<callable_iterator object at 0x000002AA891300A0>

Пример

А сега нека декларираме променлива res, чиято стойност ще бъде обектът, получен от нас в предишния пример. След това ще го обходим с цикъл:

pythontxt = 'aaaa 123 bbbb 456'
res = re.finditer('\d+', txt)

for el in res:
  print(el)

След изпълнение на кода получаваме два обекта Match object:

python<re.Match object; span=(5, 8), match='123'>
<re.Match object; span=(14, 17), match='456'>

Тези обекти съдържат информация за всички съвпадения с регулярния израз под формата на кортеж. Можем да извлечем от тях съвпаденията по индекс:

pythonfor el in res:
  print(el[0])

Резултат от изпълнението на кода:

python'123'
'456'

Пример

За по-голяма нагледност нека при търсене на съвпадения използваме групи. А при обхождане на обектите в цикъла да изведем първото съвпадение (то ще се счита за нулева група), както и неговите елементи, също на своя ред разпределени в групи:

pythontxt = 'aaaa 123 bbbb 456'
res = re.finditer('(\d)(\d)', txt)

for el in res:
  print(el[0], el[1], el[2])

След изпълнение на кода получаваме нулевата група, т.е. целия подниз, както и първия и втория символ от този подниз:

python'12' '1' '2'
'45' '4' '5'

Вижте също

  • метод findall на модула re,
    който връща списък от всички съвпадения в низа
  • метод search на модула re,
    който търси първото съвпадение с регулярен израз в низа
  • метод match на модула re,
    който търси съвпадение с регулярен израз в началото на низа
  • метод fullmatch на модула re,
    който търси всички съвпадения с регулярен израз в низа
  • обект Match object на модула re,
    който съдържа информация за съвпаденията с регулярен израз
  • метод split на модула re,
    който разделя низа на списък по указан разделител