web-dev-qa-db-fra.com

Comment trouver tous les correspondances à une expression régulière en Python?

Dans un programme en cours d’écriture, j’ai Python utiliser la fonction re.search() pour trouver des correspondances dans un bloc de texte et imprimer les résultats. Cependant, le programme se ferme une fois qu'il a trouvé la première correspondance dans le bloc de texte.

Comment puis-je faire cela à plusieurs reprises lorsque le programme ne s'arrête pas tant que TOUTES les correspondances n'ont pas été trouvées? Y at-il une fonction distincte pour faire cela?

267
kjakeb

Utilisez re.findall ou re.finditer à la place.

re.findall(pattern, string) renvoie une liste des chaînes correspondantes.

re.finditer(pattern, string) renvoie un itérateur sur MatchObject objets.

Exemple:

re.findall( r'all (.*?) are', 'all cats are smarter than dogs, all dogs are dumber than cats')
# Output: ['cats', 'dogs']
472
Amber