Maison >développement back-end >Tutoriel Python >Comment puis-je trouver toutes les occurrences d'une sous-chaîne dans une chaîne Python ?

Comment puis-je trouver toutes les occurrences d'une sous-chaîne dans une chaîne Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-22 00:53:38862parcourir

How Can I Find All Occurrences of a Substring in a Python String?

Recherche de toutes les occurrences d'une sous-chaîne

Python fournit des capacités étendues de manipulation de chaînes, notamment les fonctions string.find() et string.rfind( ) qui récupèrent respectivement la première occurrence d’une sous-chaîne depuis le début et la fin. Cependant, ces fonctions ne suffisent pas lorsque l'on cherche à trouver toutes les occurrences d'une sous-chaîne.

Solution : exploiter les expressions régulières

En l'absence d'une "chaîne" intégrée .find_all()", nous pouvons exploiter la puissance des expressions régulières :

import re

text = "test test test test"

# Find all occurrences of "test"
matches = [m.start() for m in re.finditer('test', text)]

# Print the found indexes
print(matches)  # [0, 5, 10, 15]

Cette solution itère sur le résultat de re.finditer('test', text), un générateur qui génère des objets correspondants pour chaque occurrence découverte. En extrayant la propriété start() de chaque correspondance, nous obtenons une liste d'index représentant la position de la sous-chaîne dans la chaîne d'origine.

Gestion des correspondances qui se chevauchent

Si Les correspondances qui se chevauchent sont autorisées, elles peuvent être capturées en utilisant des assertions anticipées dans l'expression régulière :

matches = [m.start() for m in re.finditer('(?=tt)', 'ttt')]
# [0, 1]

Effectuer Recherches inversées

Pour effectuer une recherche inversée sans chevauchements, une combinaison d'anticipations positives et négatives peut être utilisée :

search = 'tt'
matches = [m.start() for m in re.finditer('(?=%s)(?!.{1,%d}%s)' % (search, len(search)-1, search), 'ttt')]
# [1]

En utilisant des expressions régulières, nous pouvons identifier efficacement et récupérez toutes les occurrences d'une sous-chaîne dans une chaîne Python.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn