Operatorreihenfolge in regulären Ausdrücken: (..|.. ... ..|..)
In regulären Ausdrücken ist die Die Rangfolge für Ausdrücke in (..|.. ... ..|..) ist von links nach rechts. Die erste passende Alternative „gewinnt“ und nachfolgende Alternativen werden nicht bewertet. Dieses Verhalten ist charakteristisch für nichtdeterministische endliche Automaten (NFAs), die üblicherweise in Regex-Engines verwendet werden.
Links-nach-Rechts-Auswertung
Zum Beispiel der Ausdruck ( aaa|bb|a) stimmt mit „bb“ in der Zeichenfolge „bbac“ überein, da „bb“ im Regex-Muster vor „a“ erscheint. Wenn Sie stattdessen Regex.Matches verwenden würden, würden sowohl „bb“ als auch „a“ übereinstimmen.
Reihenfolge der Alternativen
Innerhalb einer nicht verankerten Alternativgruppe wird die Die Reihenfolge der Alternativen ist wichtig. Beispielsweise stimmt der Ausdruck (a|aa|aaa) mit jedem „a“ in der Zeichenfolge „abbccaa“ überein.
Wenn jedoch Wortgrenzen zur Verankerung des Ausdrucks verwendet werden, wird die Reihenfolge der Alternativen irrelevant. Beispielsweise stimmt (.)a(.|$) mit „a“ in „abbccaa“ überein, unabhängig von der Reihenfolge der Alternativen „.*“ und „$.“
Hinweis zum RegexOptions.RightToLeft-Flag
Es ist wichtig zu beachten, dass nur das RegexOptions.RightToLeft-Flag gilt beeinflusst die Richtung, in der die Eingabezeichenfolge gescannt wird, nicht die Reihenfolge, in der das Regex-Muster verarbeitet wird.
Das obige ist der detaillierte Inhalt vonWie wirkt sich die Operatorreihenfolge auf die Übereinstimmung in regulären Ausdrücken aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!