Dans un programme que j'écris, Python utilise la re.search()
fonction pour trouver des correspondances dans un bloc de texte et imprimer les résultats. Toutefois, le programme se ferme une fois qu'il trouve la première correspondance dans le bloc de texte.
Comment faire cela à plusieurs reprises lorsque le programme ne s'arrête pas jusqu'à ce que TOUTES les correspondances aient été trouvées? Existe-t-il une fonction distincte pour ce faire?
Réponses:
Utilisez
re.findall
ou à lare.finditer
place.re.findall(pattern, string)
renvoie une liste de chaînes correspondantes.re.finditer(pattern, string)
renvoie un itérateur sur lesMatchObject
objets.Exemple:
la source
finditer
était ce que je cherchais. Je suis surpris que l'un renvoie des objets Match et les autres chaînes. Je m'attendais à utiliser une fonctionmatch_all
oumatch_iter
.re.search
en boucle. Cela retournera unMatch
objet. Vous voudrez passerMatch.start() + 1
commepos
argumentre.search
pour la prochaine itération de la boucle.findall
renvoie une liste de tuples correspondants, pas une liste de chaînes correspondantes.