Atomare Gruppen und possessive Quantoren verwenden

(Auszug aus "Reguläre Ausdrücke" von Jeffrey E. F. Friedl)

In vielen Fällen können atomare Gruppen (siehe dazu Atomare Klammern) oder possessive Quantoren (siehe dazu Possessive Quantoren) eine deutliche Geschwindigkeitssteigerung bewirken, sofern sie nicht zu anderen Treffern führen. Wenn beispielsweise die Maschine bei ˹^[^:]+:˼ keinen Treffer für den Doppelpunkt am Ende findet, ist jeder Backtrack-Versuch zwecklos, weil die Zeichen bis dahin sicher keine Doppelpunkte sind, sonst hätte schon der frühere Teil der Regex, ˹[^:]+˼, nicht gepasst. Man kann hier also ohne irgendwelche Einwände atomare Klammern ˹^(?>[^:]+) oder einen possessiven Quantor anwenden; damit werden alle abgespeicherten Zustände weggeworfen, die vom Plus herrühren. Damit gibt es keine gespeicherten Zustände mehr, die mit dem Backtrack-Mechanismus durchprobiert werden müssten, und alle ohnehin vergeblichen Backtrackings werden eingespart. (Im Kasten Automatische »Possessifizierung« wird beschrieben, dass eine ausreichend schlaue Regex-Maschine diese Situation selbst erkennen kann.)

Ich muss dennoch betonen, dass eine fehlerhafte Anwendung dieser zwei Konstrukte zu falschen Treffern führen kann oder dazu, dass gar kein Treffer gefunden wird. Verwenden Sie deshalb diese Konstrukte mit Bedacht. Wenn statt ˹[^:]˼ ein einfaches ˹^.*:˼ verwendet wird, wie in ˹^(?>.*), ist der Fehlschlag sicher. Das ˹.*˼ erkennt die ganze Zeile inklusive aller Doppelpunkte, die vielleicht darin vorkommen. Für das darauffolgende ˹:˼ bleiben keine Zeichen mehr übrig, und wegen der atomaren Gruppe kann kein Zeichen mehr zurückgefordert werden.

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema Reguläre Ausdrücke bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:
   

Copyright der deutschen Ausgabe © 2008 by O’Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "Reguläre Ausdrücke" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstr. 81, 50670 Köln