Método finditer do módulo re

O método finditer do módulo re retorna um iterador de todas as correspondências com uma expressão regular em uma string. No primeiro parâmetro do método, especificamos a expressão regular. No segundo parâmetro, definimos a string na qual procuramos a expressão regular. No terceiro parâmetro opcional, podemos definir sinalizadores. O método verifica todas as correspondências, procurando-as da esquerda para a direita.

Sintaxe

pythonimport re

re.finditer(expressão_regular, string, [sinalizadores])

Exemplo

Vamos encontrar todas as substrings com dígitos na nossa string:

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

print(res)

Resultado da execução do código:

python<callable_iterator object at 0x000002AA891300A0>

Exemplo

E agora vamos declarar a variável res, cujo valor será o objeto obtido por nós no exemplo anterior. Em seguida, vamos iterar sobre ela com um loop:

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

for el in res:
  print(el)

Após a execução do código, obteremos dois objetos Match object:

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

Esses objetos contêm informações sobre todas as correspondências com a expressão regular na forma de uma tupla. Podemos extrair deles as correspondências por índice:

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

Resultado da execução do código:

python'123'
'456'

Exemplo

Para maior clareza, vamos usar grupos de captura durante a busca por correspondências. E ao iterar sobre os objetos no loop, vamos exibir a primeira correspondência (ela será considerada o grupo zero), bem como seus elementos, que por sua vez também estão distribuídos em grupos de captura:

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

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

Após a execução do código, obteremos o grupo zero, ou seja, toda a substring, bem como o primeiro e o segundo caractere desta substring:

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

Veja também

  • método findall do módulo re,
    que retorna uma lista com todas as correspondências na string
  • método search do módulo re,
    que busca a primeira correspondência com a expressão regular na string
  • método match do módulo re,
    que busca correspondência com a expressão regular no início da string
  • método fullmatch do módulo re,
    que busca todas as correspondências com a expressão regular na string
  • objeto Match object do módulo re,
    que contém informações sobre as correspondências com a expressão regular
  • método split do módulo re,
    que divide a string em uma lista pelo separador especificado