Reguläre Ausdrücke als Denkweise

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

Wie wir bald sehen werden, sind reguläre Ausdrücke aus kleinen Bausteinen aufgebaut. Jeder Baustein ist für sich allein recht einfach, aber weil man diese Bausteine auf unendlich viele Arten zusammensetzen kann, braucht man einige Erfahrung, um zum gewünschten Resultat zu kommen. In diesem Abschnitt geht es um einen Überblick über die grundlegenden Begriffe bei regulären Ausdrücken. Nicht mit zu viel Tiefe: Es geht darum, ein Fundament für den Rest des Buches zu legen, auf dem die wichtigen Seitenaspekte aufbauen können, bevor wir uns zu tief in Details verstricken.

Manche Beispiele mögen lächerlich erscheinen (sie sind oft lächerlich), aber sie veranschaulichen die Art von Problemen, die man sehr oft vor sich hat – nur erkennen Sie die Probleme vielleicht noch nicht. Machen Sie sich keine Sorgen, wenn Ihnen nicht gleich der hinterste und letzte Punkt einleuchtet. Nehmen Sie den Grundgedanken jeder Lektion mit, und lassen Sie ihn einwirken. Das ist das Ziel dieses Abschnitts.

Wenn Sie Erfahrungen mit regulären Ausdrücken haben

Wenn Ihnen reguläre Ausdrücke schon einigermaßen bekannt sind, bietet Ihnen die Übersicht in diesem Abschnitt nicht viel Neues. Mindestens überfliegen sollten Sie es trotzdem. Auch wenn Ihnen die Bedeutung der Metazeichen bekannt ist, kann die Herangehensweise an reguläre Ausdrücke neu sein.

Es ist ein Unterschied, ob Sie einem Instrument Töne entlocken oder ob Sie ein Instrument wirklich spielen können. Genauso gibt es einen Unterschied zwischen dem Verstehen von regulären Ausdrücken und dem wirklichen Verstehen von regulären Ausdrücken. Manche der Schritte präsentieren, was Sie schon kennen, vielleicht aber in einer neuen Art, und die kann der Weg zum wirklichen Verständnis von regulären Ausdrücken sein.

Textdateien durchsuchen: egrep

Textstücke zu suchen, ist die einfachste Anwendung von regulären Ausdrücken -– viele Texteditoren und Textverarbeitungssysteme ermöglichen es, ein Dokument nach regulären Ausdrücken zu durchsuchen. egrep ist noch einfacher. Man gibt egrep einen regulären Ausdruck sowie ein paar Namen von Dateien, die durchsucht werden sollen. egrep wendet den regulären Ausdruck auf jede Zeile jeder Datei an und schreibt die Zeilen heraus, für die der reguläre Ausdruck zutrifft. egrep ist ein frei verfügbares Programm für eine Anzahl von Systemen, mindestens für DOS, MacOS, Windows, Unix usw. Auf der Website zu diesem Buch wird erklärt, wie Sie egrep für Ihr Betriebssystem erhalten.

Um zum E-Mail-Beispiel zurückzukommen: Der Befehl, mit dem ich das einfache E-Mail-Inhaltsverzeichnis erzeugt habe, ist in der folgenden Abbildung dargestellt. egrep betrachtet das erste Argument als den regulären Ausdruck und alle weiteren Argumente als Datei(en), in denen gesucht werden soll. Beachten Sie, dass die Hochkommas in der Abbildung nicht zum regulären Ausdruck gehören; sie werden von meiner Shell verlangt. (Anmerkung: Die Shell ist der Teil des Systems, der eingegebene Befehle liest und dadurch erforderliche Programme ausführt. Bei der von mir benutzten Shell dienen Hochkommas dazu, Argumente für ein Programm einzuschließen. Der Shell wird damit gesagt, den Inhalt der Argumente nicht anzurühren. Ohne Hochkommas würde die Shell beispielsweise ein *-Zeichen, das als Teil des regulären Ausdrucks gemeint ist, selbst interpretieren, nämlich als Dateiglob, als Teil eines Dateinamens. Dagegen soll der Inhalt der Hochkommas unverändert an egrep übergeben werden, das ihn als regulären Ausdruck interpretieren wird. Windows- und COMMAND.COM-Benutzer verwenden wahrscheinlich mit Vorteil doppelte Anführungszeichen ("Gänsefüßchen") statt Hochkommas.) Wenn ich egrep benutze, kleide ich den regulären Ausdruck fast ausnahmslos in solche Hochkommas ein. Welche Zeichen Spezialzeichen sind, in welchem Zusammenhang und für wen (für den regulären Ausdruck oder für das verwendete Programm), in welcher Reihenfolge sie ausgewertet werden: Diese Detailfragen werden dann wichtig, wenn reguläre Ausdrücke in einer richtigen Programmiersprache verwendet werden; damit beginnen wir unter Erweiterte einführende Beispiele.

Aufruf von egrep auf der Kommandozeile

Abbildung: Aufruf von egrep auf der Kommandozeile.

Wir werden die einzelnen Teile dieses regulären Ausdrucks noch genau analysieren, aber es ist wahrscheinlich unmittelbar einleuchtend, dass bestimmte Teile eine besondere Bedeutung haben. In diesem Beispiel sind die Klammern und die Zeichen ˹^˼ und ˹|˼ Metazeichen, und zusammen mit den anderen Zeichen ergeben sie das gewünschte Resultat.

Sollte Ihr regulärer Ausdruck keines der Dutzend Metazeichen benutzen, die egrep versteht, dann wird aus dem Befehl eine simple Suche nach Zeichenketten. Wenn zum Beispiel in einer Datei nach ˹ding˼ gesucht wird, gibt egrep alle Zeilen aus, die die vier Zeichen d‧i‧n‧g hintereinander enthalten. Das geschieht auch dann, wenn diese Zeichen in einem Wort wie etwa bedingen enthalten sind.

Auch wenn die Zeile nicht das Wort ding enthält, genügt die Sequenz d‧i‧n‧g, damit der reguläre Ausdruck zutrifft. Das ist alles, wonach gesucht wird, und wenn es gefunden wird, gibt egrep die Zeile aus. Der springende Punkt ist der, dass die Suche nach regulären Ausdrücken nicht auf »Wörtern« basiert –- egrep kennt wohl Bytes und Zeilen innerhalb von Dateien, weiß aber nicht, was im Deutschen (oder in irgendeiner anderen Sprache) ein Wort, einen Satz, einen Abschnitt oder irgendein höheres Konzept ausmacht.

  

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