Maison >développement back-end >Tutoriel Python >Comment puis-je trouver des correspondances qui se chevauchent à l'aide d'expressions régulières en Python ?

Comment puis-je trouver des correspondances qui se chevauchent à l'aide d'expressions régulières en Python ?

DDD
DDDoriginal
2024-12-06 13:02:12306parcourir

How Can I Find Overlapping Matches Using Regular Expressions in Python?

Comprendre les correspondances qui se chevauchent avec des expressions régulières

Lors de l'utilisation d'expressions régulières, il est important de considérer la manière dont les correspondances qui se chevauchent sont gérées. En Python, le comportement par défaut de re.findall est de renvoyer uniquement les correspondances qui ne se chevauchent pas.

Comportement par défaut : correspondances qui ne se chevauchent pas

Par exemple, considérons l'expression :

>>> match = re.findall(r'\w\w', 'hello')

Comme prévu, la variable de correspondance contient ['he', 'll']. L'expression fait correspondre deux caractères consécutifs à la fois, ce qui entraîne des correspondances qui ne se chevauchent pas.

Correspondances superposées avec des assertions anticipées

Pour rechercher des correspondances qui se chevauchent, vous pouvez utiliser des assertions anticipées. La syntaxe d'une assertion anticipée est :

(?=...)

où ... représente une expression régulière qui correspond à la sous-chaîne souhaitée.

Par exemple, l'expression :

>>> re.findall(r'(?=(\w\w))', 'hello')

renvoie ['he', 'el', 'll', 'lo']. L'assertion d'anticipation (?=(ww)) vérifie si les deux caractères suivants de la chaîne correspondent au modèle ww, sans les consommer. Étant donné que chaque paire de caractères consécutives satisfait à ce critère, toutes les correspondances possibles qui se chevauchent sont trouvées.

Conclusion

En tirant parti des assertions anticipées, vous pouvez facilement trouver des correspondances qui se chevauchent avec des expressions régulières. Il s'agit d'une technique puissante pour des tâches telles que l'extraction de sous-chaînes ou la validation de chaînes d'entrée.

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