2011-01-15 15 views
186

En un programa que estoy escribiendo, he usado Python la función re.search() para buscar coincidencias en un bloque de texto e imprimir los resultados. Sin embargo, el programa sale una vez que encuentra la primera coincidencia en el bloque de texto.¿Cómo puedo encontrar todas las coincidencias con una expresión regular en Python?

¿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?

+0

[RE recursivas] (http://web.archive.org/web/20030206032122/http://www.puffinry.freeserve.co.uk/regex-extension.html) son una bestia diferente. Quieres repetir la búsqueda – outis

Respuesta

332

Use re.findall o re.finditer en su lugar.

re.findall(pattern, string) devuelve una lista de cadenas coincidentes.

re.finditer(pattern, string) devuelve un iterador sobre MatchObject objetos.

+2

'finditer' era lo que estaba buscando. Me sorprende que uno devuelva objetos Match y otras cadenas. Esperaba usar una función 'match_all' o' match_iter'. – dsclose

+7

DESCARGO DE RESPONSABILIDAD: aquellos solo encontrarán ** coincidencias ** no superpuestas ** –

+0

@ AntoineLizée, ¿cómo se pueden encontrar las iteraciones CON superposición? – Raksha

Cuestiones relacionadas