Beobachtungen

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

Wenn ich die ganze Beschreibung von Strings in Anführungszeichen betrachte, sehe ich gewichtige Vorteile des geänderten regulären Ausdrucks, aber auch ein paar Nachteile.

Nachteile

Lesbarkeit: Der größte Nachteil ist wohl der, dass der ursprüngliche reguläre Ausdruck ˹"([^\\"]|\\.)*"˼ leichter verständlich ist. Wir haben der Effizienz etwas an Leserlichkeit geopfert.

Wartungsfreundlichkeit: ˹"[^\\"]*(\\.[^\\"]*)*"˼ ist im Unterhalt etwas mühsamer; wenn die Regex geändert wird, muss darauf geachtet werden, dass die zwei ˹[^\\"]˼ identisch bleiben.

Vorteile

Geschwindigkeit: Die neue Regex funktioniert auch dann, wenn gar kein Treffer gefunden wird (oder wenn sie mit einem POSIX-NFA verwendet wird). Weil dafür Sorge getragen wurde, dass jeder Teil der Regex nur auf eine bestimmte Sequenz von Zeichen passt, kann die Maschine bei einem nicht passenden Text sehr schnell herausfinden, dass tatsächlich kein Treffer zu erzielen ist.

Noch schneller: Die Regex »fließt« gut, ein Ausdruck, der aus der Seite Die frei fließende Regex geborgt ist. Bei meinen Benchmark-Tests mit traditionellen NFAs war die »aufgebrochene« Version grundsätzlich schneller als die alte Version mit der Alternation. Das gilt auch dann, wenn der Text passt, wenn die alte Version also gar nicht in die Nähe des ewigen Matchings kommt.

  

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