Em um programa que estou escrevendo, o Python usa a re.search()
função para encontrar correspondências em um bloco de texto e imprimir os resultados. No entanto, o programa sai assim que encontra a primeira correspondência no bloco de texto.
Como faço isso repetidamente onde o programa não para até que TODAS as correspondências sejam encontradas? Existe uma função separada para fazer isso?
Respostas:
Use
re.findall
ou emre.finditer
vez disso.re.findall(pattern, string)
retorna uma lista de cadeias correspondentes.re.finditer(pattern, string)
retorna um iterador sobreMatchObject
objetos.Exemplo:
fonte
finditer
era o que eu estava procurando. Estou surpreso que um retorne objetos Match e as outras strings. Eu estava esperando usar uma funçãomatch_all
oumatch_iter
.re.search
em um loop. Isso retornará umMatch
objeto. Você desejará passarMatch.start() + 1
comopos
argumentore.search
para a próxima iteração do loop.findall
retornará uma lista de tuplas correspondentes, não uma lista de seqüências correspondentes.