Maison > développement back-end > C++ > Comment les expressions régulières .NET utilisent-elles des groupes d'équilibrage pour gérer les structures imbriquées?

Comment les expressions régulières .NET utilisent-elles des groupes d'équilibrage pour gérer les structures imbriquées?

DDD
Libérer: 2025-01-29 22:16:10
original
391 Les gens l'ont consulté

.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>
Copier après la connexion
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"
    • 1: "b"
    • 2: "C"
    • 3: "d"
  • 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>
Copier après la connexion
    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>
Copier après la connexion
  • 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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal