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
Libérer: 2024-12-22 00:53:38
original
832 Les gens l'ont consulté

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]
Copier après la connexion

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]
Copier après la connexion

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]
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal