Regular Expressions
Possessive Quantifizierer
Suche…
Bemerkungen
Grundlegende Verwendung von Possessive Quantifiers
Possessive Quantifizierer sind eine weitere Klasse von Quantifizierern in vielen Regex-Varianten, die es ermöglichen, das Zurückverfolgen effektiv für ein gegebenes Token zu deaktivieren. Dies kann dazu beitragen, die Leistung zu verbessern und in bestimmten Fällen Übereinstimmungen zu vermeiden.
Die Klasse der besitzergreifend quantifiers kann von faulen oder gierigen Quantifizierer durch Zugabe eines unterscheiden +
nach dem Quantifizierer, wie unten zu sehen:
Quantor | Gierig | Faul | Besitzergreifend |
---|---|---|---|
Null oder mehr | * | *? | *+ |
Ein oder mehr | + | +? | ++ |
Null oder eins | ? | ?? | ?+ |
Betrachten Sie zum Beispiel die beiden Muster ".*"
Und ".*+"
, Die mit der Zeichenfolge "abc"d
In beiden Fällen stimmt das "
am Anfang der Zeichenfolge" überein, aber danach weisen die beiden Muster unterschiedliche Verhaltensweisen und Ergebnisse auf.
Der gierige Quantifizierer schlurft dann den Rest der Zeichenkette abc"d
. Da dies nicht zum Muster passt, wird er zurückverfolgt und das d
, wobei der Quantifizierer abc"
bleibt. Da dies immer noch nicht mit dem Muster übereinstimmt, wird der Quantifizierer das "
löschen "
, so dass nur noch " abc
"
enthalten ist. Dies stimmt mit dem Muster überein (da "
das "
mit einem Literal und nicht mit dem Quantifizierer übereinstimmt), und der Regex gibt den Erfolg an.
Der Possessiv-Quantifizierer verschluckt auch den Rest der Saite, wird jedoch im Gegensatz zum gierigen Quantifizierer nicht zurückgespult. Da der Inhalt abc"d
den Rest des Musters der Übereinstimmung nicht zulässt, wird der reguläre Ausdruck angehalten und der Fehler wird gemeldet.
Da die Possessiv-Quantifizierer kein Backtracking durchführen, können sie bei langen oder komplexen Mustern zu einer erheblichen Leistungssteigerung führen. Sie können jedoch gefährlich sein (wie oben dargestellt), wenn man nicht genau weiß, wie Quantifizierer intern arbeiten.