# Метод finditer модуля re

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

## Синтаксис

`import re re.finditer(регулярка, строка, [флаги])`

## Пример

Давайте найдем все подстроки с цифрами в нашей строке:

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

Результат выполнения кода:

`<callable_iterator object at 0x000002AA891300A0>`

## Пример

А теперь давайте объявим переменную `res`, значением которой будет объект, полученный нами в предыдущем примере. Затем переберем его циклом:

`txt = 'aaaa 123 bbbb 456' res = re.finditer('\d+', txt) for el in res: print(el)`

После выполнения кода мы получим два объекта Match object:

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

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

`for el in res: print(el[0])`

Результат выполнения кода:

`'123' '456'`

## Пример

Для большей наглядности давайте при поиске совпадений будем использовать карманы. А при переборе объектов цикла выведем первое совпадение (оно будет считаться нулевым карманом), а также его элементы, тоже в свою очередь раскиданные по карманам:

`txt = 'aaaa 123 bbbb 456' res = re.finditer('(\d)(\d)', txt) for el in res: print(el[0], el[1], el[2])`

После выполнения кода мы получим нулевой карман, т.е. всю подстроку, а также первый и второй символ из этой подстроки:

`'12' '1' '2' '45' '4' '5'`

## Смотрите также

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

← →
↑