Recherche de correspondances qui se chevauchent à l'aide de Regex en Python
Dans les opérations de recherche, il est souvent nécessaire d'identifier et de récupérer plusieurs occurrences d'un modèle spécifique dans un texte plus grand. Lorsque les correspondances se chevauchent, les techniques de correspondance d'expressions régulières standard peuvent manquer certaines instances. Cette question explore comment trouver toutes les correspondances qui se chevauchent à l'aide des expressions régulières de Python.
L'objectif est d'extraire chaque ensemble de nombres à 10 chiffres dans une séquence de nombres donnée. Par exemple, dans la chaîne "123456789123456789", nous visons à obtenir :
[1234567891,2345678912,3456789123,4567891234,5678912345,6789123456,7891234567,8912345678,9123456789]
Capturer des groupes et des anticipations
Pour y parvenir, nous employons un groupe de capture au sein de une anticipation. La recherche anticipée identifie le texte qui vous intéresse (ici, les nombres à 10 chiffres), mais la correspondance réelle est la sous-chaîne de largeur nulle avant la recherche anticipée. Il en résulte des correspondances qui ne se chevauchent pas.
Mise en œuvre
En utilisant la méthode finditer, nous pouvons obtenir les correspondances comme suit :
import re s = "123456789123456789" matches = re.finditer(r'(?=(\d{10}))', s) results = [int(match.group(1)) for match in matches]
Le les résultats de sortie renvoient la liste souhaitée des correspondances qui se chevauchent :
[1234567891, 2345678912, 3456789123, 4567891234, 5678912345, 6789123456, 7891234567, 8912345678, 9123456789]
Cette approche extrait efficacement toutes les occurrences qui se chevauchent de le modèle spécifié, fournissant une technique précieuse pour un traitement de texte complet.
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!