News Ticker

Reguläre Ausdrücke 10: Klammern

Die vorletzte Regel und immer noch mittendrin. Heute geht es um eines der wichtigsten Konzepte regulärer Ausdrücke: Gruppierungen. Man kann mehrere Zeichen in einen Ausdruck verwandeln. Das ist nichts neues. Mit * konnte man das auch. Jedoch ist es auch möglich reguläre Ausdrücke zu gruppieren und auf diese weitere Operatoren anzuwenden. Dieser Artikel zeigt wie's geht.

Regel 10
Mit den Klammern (( und )) kann man eine Textstelle zu einem Element gruppieren.

Die Regel ist wie immer so kurz wie möglich gehalten. Weitere Konsequenzen werden wie immer hier beschrieben. Was sagt uns diese Regel? Wir können jetzt also reguläre Ausdrücke zu einem Element gruppieren. Auf dieses Element (welches dann als normaler regulärer Ausdruck bewertet wird) können wieder reguläre Ausdrücke angewandt werden. Es handelt sich also um eine Rekursion. Aber genug der Theorie; es folgt ein Beispiel:

tcr@triton ~ $ cat datei
traumschiff
raumschiff
traumtraumschiff
tcr@triton ~ $ egrep "(traum)*" datei
traumschiff
traumtraumschiff
tcr@triton ~ $ egrep "(traum){2}" datei
traumtraumschiff
tcr@triton ~ $

Das erste grep-Kommando gruppiert den String traum und wendet den *-Operator auf diesen an. Konkret heißt das: traum darf beliebig oft vorkommen. Das zweite Statement benutzt den Mengenoperator mit der Variable 2. Es muss also traumtraum im Text vorkommen.

Dies zeigt wie man Zeichen ohne spezieller Bedeutung zusammenknüpft. Klammern kann man aber auch auf reguläre Ausdrücke anwenden: ((ab){2}x){2} sieht etwas komplizierter aus, ist es aber nicht. ab muss zweimal vorkommen, danach ein x. Dies sieht dann so aus: ababx. Dieser ganze Ausdruck steht in Klammern und muss genau zweimal vorkommen, also ababxababx. Und genau darauf passt dieser reguläre Ausdruck.

Diese Regel gibt den bisherigen regulären Ausdrücken viel mehr Flexibilität – was ja auch Sinn und Zweck der Ausdrücke ist. Ich wünsche wie immer viel Spaß beim Ausprobieren. Fragen könnt ihr im Kommentarfeld stellen ;).