Features und Dialekte

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

Wir haben im Umgang mit zwei recht verschiedenen Werkzeugen (Perl und egrep) ein Gefühl für den Gebrauch von regulären Ausdrücken entwickelt, und man könnte denken, dass man mit dieser Erfahrung reguläre Ausdrücke überall anwenden könnte. Aber schon der Vergleich von egrep-Versionen aus Einführung in reguläre Ausdrücke und besonders der Vergleich zwischen Perl und Java in Erweiterte einführende Beispiele haben gezeigt, dass die regulären Ausdrücke bei anderen Programmiersprachen in krass unterschiedlicher Weise benutzt werden.

Wenn wir die Implementation von regulären Ausdrücken in einer Programmiersprache oder einem Werkzeug betrachten, sind vor allem drei Bereiche von Belang:

  • Welche Metazeichen werden unterstützt, und welche Bedeutung haben sie? Diesen Bereich nenne ich oft den Regex-Dialekt.
  • Wie sieht die Schnittstelle zur Programmiersprache aus? Wie gibt man reguläre Ausdrücke an, mit welchen Funktionen werden sie aufgerufen, wie gibt man an, auf welchen Text sie angewendet werden sollen?
  • Wie arbeitet die Regex-Maschine? Wie wendet sie einen regulären Ausdruck auf den abzusuchenden Text an? Die vom Autor der Sprache oder des Werkzeugs gewählte Art der Regex-Maschine hat große Auswirkungen auf das Resultat, das die Maschine erbringt.

Reguläre Ausdrücke und Autos

Die oben aufgezählten Erwägungen gleichen dem, was man sich beim Autokauf so überlegt. Bei regulären Ausdrücken fallen zuerst die verwendeten Metazeichen auf, bei Autos die Form, die Karosserie, die Farbe und die sichtbaren Extras wie Ledersitze und die Audio-Anlage. Diese Dinge werden in Anzeigen angepriesen und in Prospekten ins beste Licht gerückt. Dem entspricht etwa die Tabelle der Metazeichen unter Erweiterung der Fundamente. Sie enthält wichtige Informationen, ist aber nur eine Seite der Medaille.

Genauso wichtig ist die Schnittstelle, die Art, wie die regulären Ausdrücke mit der Programmiersprache verknüpft sind. Das ist zum Teil nur Kosmetik, etwa wenn man einen regulären Ausdruck in der Syntax der Programmiersprache angibt. Andere Teile der Schnittstelle haben stärkere Auswirkungen. Sie bestimmen, welche Operationen unterstützt werden und wie einfach sie benutzt werden können. In der Analogie zum Auto sind das die Dinge, die im täglichen Gebrauch des Autos eine Rolle spielen, bei der Mensch-Maschine-Schnittstelle. Manche sind nebensächlich, etwa, ob der Tankdeckel links oder rechts angebracht ist oder ob automatische Fensterheber vorhanden sind. Andere sind schon wichtiger – hat das Auto Handschaltung oder ein automatisches Getriebe? Andere Aspekte sind eher funktioneller Art: Passt das Auto in die Garage? Kann man einen Schrank transportieren? Skier? Fünf Erwachsene? Und wie leicht oder mühsam kommen diese fünf in das Auto oder wieder heraus – im Minivan wohl leichter als im Zweitürer. Die meisten dieser Dinge sind auch in der Werbebroschüre beschrieben, wenn auch eher im Kleingedruckten.

Beim letzten Punkt geht es um den Motor und den ganzen Antrieb. Hier versagt die Analogie, weil die meisten Autofahrer nur so viel über Motor und Antrieb wissen, dass sie das Auto vernünftig benutzen können: Bei einem Benzinmotor werden sie kaum Diesel tanken, und bei einem handgeschalteten Auto vergisst kaum jemand die Bedienung der Kupplung. Bei regulären Ausdrücken gibt die Dokumentation in aller Regel nicht den kleinsten Hinweis auf das Innenleben, auf den internen Aufbau der Regex-Maschine. Diese Details sind aber so wichtig, dass ich ihnen das ganze nächste Kapitel gewidmet habe.

In diesem Kapitel

Wie aus dem Titel hervorgeht, gibt dieses Kapitel einen Überblick über die verschiedenen Dialekte von regulären Ausdrücken und ihre Features. Wir behandeln die häufig vorkommenden Metazeichen und ein paar Schnittstellen zu den jeweiligen Programmiersprachen. Es geht also um die ersten zwei Punkte der Aufzählung oben. Der dritte Punkt – wie eine Regex intern arbeitet und was das für uns für praktische Implikationen hat – wird in den nächsten Kapiteln behandelt.

Dieses Kapitel erhebt allerdings keinen Anspruch auf Vollständigkeit. Weder werden die Features einer bestimmten Regex-Implementation erschöpfend behandelt, noch zeige ich bis ins Detail, wie reguläre Ausdrücke in den einzelnen Werkzeugen und Programmiersprachen eingesetzt werden. Das Kapitel bietet eher eine Übersicht über die regulären Ausdrücke und die verfügbaren Werkzeuge, in denen reguläre Ausdrücke benutzt werden. Ein Höhlenbewohner, der nur ein Werkzeug benutzt, braucht sich nicht um andere Werkzeuge (oder abgewandelte Formen) zu kümmern, solange er in seiner Höhlenwelt lebt. Da das aber nicht der Fall ist, ist es ganz geschickt, etwas über die Herkunft und den inneren Aufbau des verwendeten Werkzeugs zu wissen.

  

  

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