Methode 2: Die kritische Schleife im größeren Zusammenhang betrachten

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

Ich hatte gesagt, dass es zwei Wege zum »Schleifen aufbrechen« gibt, die zur gleichen Regex führen. Bei diesem zweiten Ansatz beginnen wir mit den Elementen, die im Suchstring wohl am häufigsten vorkommen, und widmen uns nachher den seltenen Fällen. Betrachten wir, was das nie endende ˹(\\.|[^\\"]+)*˼ eigentlich macht und in welchen Situationen es eingesetzt wird. Normalerweise enthält wohl ein String in Anführungszeichen mehr normale als geschützte Zeichen, also wird ˹[^\\"]+˼ den größten Teil erkennen. ˹\\.˼ wird nur für selten auftretende Dinge gebraucht. Die Alternation, die beides erlaubt, ist zwar sehr praktisch, aber sie erfordert unverhältnismäßig viel Arbeit auch bei Strings, die gar keine geschützten Zeichen enthalten, und das sind wohl die meisten.

˹[^\\"]+˼ erkennt also normalerweise alles im Innern des Strings, und nach dem Ende des damit gefundenen Textes folgt immer ein Anführungszeichen oder ein Backslash. Wenn ein Backslash folgt, wollen wir auch das Zeichen danach haben (was immer es ist) und danach ein weiteres Mal »normalen Text«, der von ˹[^\\"]+˼ erkannt wird. Nach jedem dieser ˹[^\\"]+˼ finden wir wieder die gleiche Situation vor: Entweder folgt das schließende Anführungszeichen oder wieder ein Backslash.

Wenn wir diese Betrachtungsweise eins zu eins ins Regexische übersetzen, ergibt sich der gleiche Ausdruck, den wir schon mit Methode 1 erhalten haben:

˹"[^\\"]+(▵\\.[^\\"]+)*"˼

Jedes Mal, wenn der mit markierte Punkt erreicht wird, wissen wir, dass ein Anführungszeichen oder ein Backslash folgt. Wenn es ein Backslash ist, nehmen wir diesen, das folgende Zeichen und weiteren Text, bis wir wieder zu so einem »Anführungszeichen oder Backslash«-Punkt kommen.

Wie bei der Methode 1 müssen wir auch hier berücksichtigen, dass geschützte Zeichen direkt hintereinander oder direkt nach dem führenden Anführungszeichen vorkommen können. Mit der gleichen Argumentation wie vorhin ersetzen wir die Pluszeichen durch Sterne und erhalten die identische Regex wie bei Allgemeines Vorgehen beim Aufbrechen von Schleifen.

  

<< 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