Abschließende Betrachtungen
(Auszug aus "Reguläre Ausdrücke" von Jeffrey E. F. Friedl)
Ich denke, es ist klar geworden, dass ich Perls Art von regulären Ausdrücken sehr mag, und das mit gutem Grund, wie ich zu Anfang von Perl gesagt habe. Larry Wall, der Autor von Perl, hat sich offenbar von gesundem Menschenverstand und von großem Erfindergeist leiten lassen. Sicher, die Implementation hat ihre Macken, aber ich genieße noch immer den Reichtum des Regex-Dialekts und die Art, wie er in Perl eingebettet ist.
Ich bin aber kein blinder Fanatiker – Perl besitzt einige Features nicht, die ich mir wünsche. Da einige meiner Wünsche aus der ersten Auflage dieses Buches in Erfüllung gegangen sind, denke ich mir frech ein paar neue Wünsche aus. Das offensichtlichste Versäumnis ist das Fehlen von benannten Klammerausdrücken (siehe Benannte Unterausdrücke). In diesem Kapitel wurde eine Methode gezeigt, mit der man diese Funktionalität nachbilden kann; diese hat aber ernsthafte Schwächen, und es wäre viel besser, wenn benannte Klammerausdrücke direkt in die Regex-Sprache eingebaut wären. Mengenoperationen auf Zeichenklassen (siehe Mengenoperationen mit Zeichenklassen) wären auch ganz schön, auch wenn man diese mit Lookaround und einigem Aufwand imitieren kann (siehe Mengenoperationen bei Klassen mit Lookaround imitieren).
Dann wären da noch die possessiven Quantoren. In Perl gibt es die atomaren Klammerausdrücke, die sogar noch etwas vielseitiger sind, aber mit possessiven Quantoren kann man einen regulären Ausdruck je nach Situation klarer und eleganter schreiben. Ich wünschte mir beide Notationen. Außerdem kann ich mir noch zwei verwandte Konstrukte vorstellen, die ich bisher noch nirgends implementiert gefunden habe. Das eine wäre ein einfaches »Vergiss!«-Metazeichen, beispielsweise ˹\v˼, bei dessen Erreichen alle gespeicherten Zustände sofort weggeworfen würden. (Damit wäre ˹x+\v˼ äquivalent zum possessiven ˹x++˼ oder zum atomaren ˹(?>x+)˼.) Das andere Metazeichen würde dem Getriebe explizit das Weiterschalten untersagen. Das Metazeichen würde besagen: »Entweder wird vom gerade verfolgten Pfad aus ein Treffer gefunden, oder das Ganze ist ein Fehlschlag.« Als Zeichen schlage ich ˹\V˼ vor.
Ganz allgemein denke ich, dass es im Zusammenhang mit ˹\V˼ ganz nützlich wäre, wenn man das Getriebe direkt beeinflussen könnte. Damit würden Dinge wie die von Den längsten frühesten Treffer finden viel einfacher.
Schon bei Codemuster interpolieren hatte ich mir gewünscht, dass es möglich sein sollte, genauer zu steuern, auf welche Weise ein Codemuster in eine Regex interpoliert werden soll.
Perl ist nicht die ideale Sprache für reguläre Ausdrücke, aber sehr nahe dran, und Perl wird immer besser.
<< 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