Expressions régulières et correspondances qui se chevauchent : un guide détaillé
Les expressions régulières sont des outils puissants pour la correspondance de modèles dans les chaînes. Cependant, les moteurs d'expressions régulières standard renvoient généralement uniquement des correspondances qui ne se chevauchent pas. Cet article explore les techniques permettant de trouver des correspondances qui se chevauchent.
Une méthode courante utilise des analyses positives. Les assertions positives d'apparence, comme (?<=...)
, identifient les positions précédées d'un modèle spécifique. Bien qu'utiles, ils marquent uniquement les positions fin des correspondances qui se chevauchent, pas les correspondances elles-mêmes. Par exemple, la recherche de « nn » qui se chevauchent dans « nnnnnn » pourrait donner :
(Indiquant les positions finales uniquement).
Pour capturer les chaînes qui se chevauchent réellement, une assertion anticipée positive est plus efficace. L'utilisation de (?=nn)
ou du plus simple (n)(?=(n))
nous permet de faire correspondre le premier « n » de chaque paire de « nn » qui se chevauchent, en capturant le deuxième « n » dans un groupe nommé (ou en utilisant des parenthèses de capture). Cette approche est plus efficace et fournit des correspondances complètes qui se chevauchent.
L'utilisation de parenthèses de capture dans la recherche anticipée permet également des références arrière, permettant l'identification de modèles qui se chevauchent plus complexes. Cette flexibilité supplémentaire fait des analyses anticipées une méthode supérieure pour extraire les correspondances qui se chevauchent à partir de chaînes à l'aide d'expressions régulières.
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!