.NET reguläre Ausdrücke bieten ein einzigartiges und leistungsstarkes Merkmal: Ausgleichsgruppen. Dies ermöglicht eine anspruchsvolle Musteranpassung, insbesondere nützlich, um verschachtelte Strukturen wie Klammern oder Klammern zu validieren. Lassen Sie uns untersuchen, wie sie funktionieren.
Im Gegensatz zu vielen anderen Regex -Motoren verarbeitet .NETs Motor wiederholt, wie sich Gruppen unterschiedlich erfassen. Ein Muster wie (.)
erfasst alle übereinstimmenden Zeichen einzeln, nicht nur das letzte. Dies ist entscheidend für die Funktionalität des Ausgleichsgruppen.
Ausgleichsgruppen unter Verwendung der Syntax (?<name>...)
mithilfe eines Stapels erfassen. Das (?<name>...)
-Konstrukt drückt eine Erfassung auf einen benannten Stapel. Ein entsprechendes (?<-name>)
steckt eine Aufnahme aus diesem Stapel. Dieser stackbasierte Ansatz ist der Schlüssel zur Validierung verschachtelter Strukturen.
Bedingte Muster, geschrieben als (?(condition)truePattern|falsePattern)
, arbeiten Sie Hand in Hand mit Ausgleichsgruppen. Der condition
prüft oft, ob ein benannter Stapel leer ist. Wenn die Bedingung wahr ist, wird truePattern
angepasst; Ansonsten wird falsePattern
(oder nichts) übereinstimmt.
Verwenden wir einen Regex, um die ordnungsgemäß ausgeglichenen Klammern zu validieren:
<code>^(?:[^()]|(?\<open>\()|(?<close>\)))*(?(open)(?!))$</code>
Dieser Regex stimmt wiederholt mit Nichtparenthäen an oder schiebt eine öffnende Klammung auf den "Open" -Stapel ((?<open>()
) oder steckt eine Klammer aus dem "Open" -Stapel ((?<-open>))
). Die endgültige (?(open)(?!))
-Behauptung stellt sicher
können Sie verschachtelte Inhalte erfassen. Die innere Gruppe ((?<name1>(?<name2>subpattern))
) könnte eine Erfassung aufnehmen, während die äußere Gruppe (name2
) den Text zwischen der Poped Caption und ihrer eigenen Übereinstimmung erfasst. name1
Das obige ist der detaillierte Inhalt vonWie funktionieren die Ausgleichsgruppen in .NET reguläre Ausdrücke zur Validierung verschachtelter Strukturen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!