Druckversion

Reguläre Ausdrücke

Definition Weiter

Ein regulärer Ausdruck ist nichts anderes als ein Suchmuster, um übereinstimmende Muster in einer Eingabe zu finden.

In der theoretischen Informatik wird der Begriff des regulären Ausdrucks im Zusammenhang mit endlichen Automaten in einer anderen Terminologie verwendet.

Ein Beispiel Zurück Anfang Weiter


Einfache reguläre Ausdrücke sind Ihnen sicher schon begegnet, ohne dass Sie es bewusst wahr genommen haben. Zum Beispiel bei der Suche nach einem Zeichenmuster »Text« im Editor vi (mit »/Text«).

Bleiben wir beim Beispiel des vi und betrachten weitere Möglichkeiten »regulärer Ausdrücke« anhand eines Verses von Eugen Roth:

Übelkeit

Du magst der Welt oft lange trotzen,
Dann spürst du doch: es ist zum ---.
Doch auch wenn deine Seele bricht,
Beschmutze deinen Nächsten nicht!

Aus irgend einem Grund sei der Ersatz aller Textpassagen »dein« durch »sein« erwünscht. Im Kommandomodus des vi verrichtet folgende Zeile Suche und Ersatz:

:1,$s/dein/sein/g

Als Ergebnis erhalten wir:

Übelkeit

Du magst der Welt oft lange trotzen,
Dann spürst du doch: es ist zum ---.
Doch auch wenn seine Seele bricht,
Beschmutze seinen Nächsten nicht!

Ein »statischer« Text ist ein einfacher Spezialfall eines regulären Ausdrucks. Erst unser nächstes Ansinnen, beide Auftreten des Worts »doch« zu streichen, lässt die Flexibilität des Konzepts erahnen:

:1,$s/[Dd]och//g

Als Text erzielen wir:

Übelkeit

Du magst der Welt oft lange trotzen,
Dann spürst du : es ist zum ---.
 auch wenn seine Seele bricht,
Beschmutze seinen Nächsten nicht!

Der praktische Nutzen? Zurück Anfang Weiter

Stellen Sie sich vor, auch Sie schreiben eine Einführung über irgendetwas. Und auch Sie veröffentlichen das Ganze in den zwei Formaten HTML und Postscript. Sie schreiben auch noch in Deutsch und müssen in LaTeX jedes 'ü' durch '"u' ausdrücken, jeden 'ö' durch '"o' usw. Vielleicht machen Sie sich die Arbeit, in HTML die Umlaute durch den Unicode auszudrücken... Dann könnten Sie alles per Hand anpassen, oder das Ganze durch ein paar wenige Zeilen regulärer Ausdrücke erledigen.

Bevor wir uns den einzelnen Werkzeugen zuwenden, sollen alle regulären Ausdrücke tabellarisch zusammen gefasst werden.

Alle Regulären Ausdrücke auf einen Blick Zurück Anfang Weiter


^
        

Sucht das Muster am Zeilenanfang.

/^beginnt hier/
$
        

Sucht das Muster am Zeilenende.

/endet hier$/
*
        

Beliebig viele Auftreten des vorangegangenen Zeichens; im Beispiel suchen wir Zeilen, die mit »schon« beginnende Muster enthalten (beiliebig viele führende Leerzeichen):

/ *schon/
.
        

Genau ein beliebiges Zeichen.

/.och/
[]
        

Genau eines der eingeschlossenen Zeichen.

/[Dd]och/
[a-z]
        

Eines der Zeichen aus dem Bereich.

/[A-X]och/
[^]
        

Keines der eingeschlossenen Zeichen.

/[^ln]och/
\
        

Sperrt die Sonderbedeutung des nachfolgenden Zeichens.

/x\$\>y/
\<
        

Muster am Wortanfang suchen.

/\<doch/
\>
        

Muster am Wortende suchen.

/ung\>/
\(..\)
        

Eingeschlossenes Muster vormerken; auf dieses kann später über \1 zugegriffen werden. Bis zu neun Muster können auf diese Weise gespeichert werden (Beispiel).

/\(aff\)ig \1enstark/
x\{m\}
        

m-faches Auftreten des Zeichens x.

/s\{3\}/
x\{m,n\}
        

Mindestens m-, maximal n-maliges Auftreten des Zeichens x

/+\{5,8\}/

Zwar vermag nicht jedes der nachstehenden Tools mit jedem der Ausdrücke etwas anzufangen, aber die meisten Mechanismen lassen sich schon in einem Pager wie less nachvollziehen.

Beispiel zu \(..\) Zurück Anfang

In einem Leserbrief an eine beliebige Zeitung verwenden wir mehrfach die Redewendung »Herren und Damen«. Später wird uns bewusst, dass wir die guten Manieren etwas vernachlässigt hatten und wollen die Ansprache nun in »Damen und Herren« ändern:

Meine Herren und Damen!
...
bitte ich die Herren und Damen, sich mit den Mechanismen der regulären Ausdrücke vertraut zu machen.
...
Ich danke Ihnen, meine Herren und Damen!

Im Vi erledigt eine einzige Zeile die Arbeit:

:1,$s/\(Herren\) \(und\) \(Damen\)/\3 \2 \1/g

Die drei uns interessierenden Muster merken wir uns vor, und greifen während der Ersetzung in umgekehrter Reihenfolge auf diese zu.

Meine Damen und Herren!
...
bitte ich die Damen und Herren, sich mit den Mechanismen der regulären Ausdrücke vertraut zu machen.
...
Ich danke Ihnen, meine Damen und Herren!
 Korrekturen, Hinweise?
Startseite Nächste Seite Nächstes Kapitel Vorherige Seite Kapitelanfang