.NET Expression régulière dans l'expression régulière: l'arme de la manipulation des structures imbriquées
Cet article traite des caractéristiques de groupe d'équilibre uniques du moteur d'expression régulière .NET, qui permet plusieurs instances du groupe en double dans le mode d'expression régulière de capture et de fonctionnement.
Répéter le groupe
Contrairement à d'autres moteurs d'expression régulière, .NET a permis d'accéder à plusieurs résultats de capture du même groupe de capture. Par exemple:
<code>(.)+</code>
Appliquer à la chaîne "ABCD":
- .NET Le moteur d'expression régulière a stocké les quatre captures (un chaque caractère) dans une pile.
- Le premier groupe comprendra ces captures:
CaptureCollection
0: "A"
Balance Group
Le groupe d'équilibre indique
, ce qui permet de supprimer sélectivement la capture de la pile. Lors de la rencontre d'un groupe d'équilibre, il vérifie s'il y a une capture dans la pile du groupe spécifié. Si c'est le cas, la dernière capture (supprimée) apparaît de la pile du groupe.
Par exemple, considérez l'expression régulière suivante: (?<name>)
Cette correspondance d'expression régulière est deux mots séparés par des caractères non mot.
<code>(?<word>\w+)\W+(?<-word>\w+)</code>
Le groupe d'équilibre sera supprimé dans la pile créée par le premier - .
-
(?<-word>)
Mode condition
Le mode de condition (?<word>)
, écrit comme , combiné avec le groupe d'équilibre. En utilisant le comportement de pile de pile vide du groupe d'équilibre, le mode de condition permet de vérifier les modèles plus compliqués en fonction de la question de savoir si la pile du groupe d'équilibre spécifié est vide.
Par exemple, la vérification d'expression régulière suivante vérifie si les supports des chaînes sont correctement appariés:
(?(condition)truePattern|falsePattern)
Il appuie sur chaque support gauche dans la pile et rattrape le retard pour chaque support droit.
Mode condition Assurez-vous que la pile est vide à la fin de la chaîne.
<code>^(?:[^()]|(?<Open>[(])|(?<-Open>[)]))*(?(Open)(?!))$</code>
- supports imbriqués et capturent le contenu
- Afin de capturer le contenu du support imbriqué, vous pouvez utiliser
(?(Open)(?!$))
grammaire. Cette grammaire:
La capture de la pile B;
Appuyez sur le contenu de la capture et du groupe actuel dans la pile A.
(?<a-b>)
En utilisant cette fonction, l'expression régulière suivante peut non seulement vérifier la chaîne parentale, mais également capturer le contenu de chaque nidification:
-
Le groupe d'équilibre, le mode conditionnel et la grammaire - fournissent des fonctions puissantes pour la correspondance de l'expression régulière de haut niveau, en particulier lors du traitement des structures imbriquées.
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