Rangfolge des Operators für reguläre Ausdrücke (..|.. ... ..|..)
In regulären Ausdrücken Die Prioritätsreihenfolge für den Pipe-Operator (|) ist von links nach rechts. Dies bedeutet, dass die erste Alternative ausgewählt wird, die mit der Eingabezeichenfolge übereinstimmt, und alle nachfolgenden Alternativen ignoriert werden.
Dieses Verhalten steht im Gegensatz zum Verhalten der meisten anderen binären Operatoren in Programmiersprachen, die von ausgewertet werden von rechts nach links. Beispielsweise wird im Ausdruck 1 2 * 3 zuerst die Multiplikationsoperation ausgeführt, was zu einem Wert von 6 führt. Anschließend wird die Additionsoperation ausgeführt, was zu einem Endwert von 8 führt.
Der Links-zu-Wert Die -rechte Priorität des Pipe-Operators ist im Kontext regulärer Ausdrücke sinnvoll. Dadurch kann der Ausdruck auf die effizienteste Art und Weise mit der Eingabezeichenfolge übereinstimmen, ohne dass Alternativen zurückverfolgt und neu bewertet werden müssen.
Es ist wichtig zu beachten, dass der Modifikator RegexOptions.RightToLeft keinen Einfluss auf die Rangfolge hat des Rohrbetreibers. Dieser Modifikator wirkt sich nur auf die Richtung aus, in der die Regex-Engine die Eingabezeichenfolge untersucht.
Zum Beispiel stimmt der folgende reguläre Ausdruck mit dem ersten Vorkommen der Zeichenfolge „bb“ in der Eingabezeichenfolge „bbac“ überein:
(aaa|bb|a)
Wenn Regex.Match verwendet wird, um eine Übereinstimmung in „bbac“ zu finden, ist der erhaltene Wert „bb“. Dies liegt daran, dass die „bb“-Alternative im regulären Ausdruck vor der „a“-Alternative erscheint und die Regex-Engine die Auswertung von Alternativen beendet, sobald eine Übereinstimmung gefunden wird.
Wenn Regex.Matches verwendet wird, um alle Übereinstimmungen zu finden in „bbac“ werden sowohl „bb“ als auch „a“ in die Ergebnisse einbezogen. Dies liegt daran, dass Regex.Matches alle Alternativen im regulären Ausdruck auswertet, unabhängig von der Reihenfolge, in der sie erscheinen.
Das obige ist der detaillierte Inhalt vonWie wirkt sich die Rangfolge auf die Zuordnung von Pipe-Operatoren für reguläre Ausdrücke aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!