En un programa que estoy escribiendo, Python usa la re.search()
función para encontrar coincidencias en un bloque de texto e imprimir los resultados. Sin embargo, el programa se cierra una vez que encuentra la primera coincidencia en el bloque de texto.
¿Cómo hago esto repetidamente cuando el programa no se detiene hasta que se hayan encontrado TODAS las coincidencias? ¿Hay una función separada para hacer esto?
Respuestas:
Uso
re.findall
o en sure.finditer
lugar.re.findall(pattern, string)
devuelve una lista de cadenas coincidentes.re.finditer(pattern, string)
devuelve un iterador sobreMatchObject
objetos.Ejemplo:
fuente
finditer
era lo que estaba buscando Me sorprende que uno devuelva objetos Match y las otras cadenas. Esperaba usar unamatch_all
omatch_iter
función.re.search
en bucle. Devolverá unMatch
objeto. Querrá pasarMatch.start() + 1
comopos
argumentore.search
para la próxima iteración del bucle.findall
devolverá una lista de tuplas coincidentes, no una lista de cadenas coincidentes.