Heim >Backend-Entwicklung >C++ >Wie wirkt sich die Reihenfolge der Operatoren regulärer Ausdrücke auf die Übereinstimmung in Alternationsgruppen (..|. .. .|..) aus?
Reihenfolge der Operatoren für reguläre Ausdrücke in (..|. .. .|..)
Die Reihenfolge der Operatoren für reguläre Ausdrücke in ( ..|. .. .|..) folgt einer Reihenfolge von links nach rechts. Dies bedeutet, dass die erste übereinstimmende Option das Ergebnis ist und die anderen Optionen nicht ausgewertet werden.
Dieses Verhalten ist typisch für reguläre Ausdrücke mit nichtdeterministischen endlichen Automaten (NFA). Eine ausführliche Erklärung finden Sie auf der Seite „Alternation“ unter „regular-expressions.info“.
Es ist wichtig zu beachten, dass das RegexOptions.RightToLeft-Flag nur die Richtung beeinflusst, in der die Regex-Engine die Eingabezeichenfolge untersucht, nicht die Reihenfolge der Musterverarbeitung.
Zum Beispiel gibt bei der Regex (aaa|bb|a) der Abgleich von „bbac“ mit Regex.Match „bb“ zurück, weil die „a“-Alternative erscheint nach „bb.“ Regex.Matches gibt jedoch sowohl „bb“ als auch „a“ zurück.
Außerdem ist innerhalb nicht verankerter Alternativgruppen die Reihenfolge der Alternativen von Bedeutung. Wenn beispielsweise (a|aa|aaa) mit „abbccaa“ übereinstimmt, wird jedes „a“-Zeichen gefunden. Aber sobald Wortgrenzen hinzugefügt werden, wird die Reihenfolge irrelevant, wie in dieser Regex-Demo gezeigt.
Das obige ist der detaillierte Inhalt vonWie wirkt sich die Reihenfolge der Operatoren regulärer Ausdrücke auf die Übereinstimmung in Alternationsgruppen (..|. .. .|..) aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!