News Ticker

Reguläre Ausdrücke 7: Geschweifte Klammern

In den bisherigen Artikeln haben wir schon einiges über reguläre Ausdrücke gelernt. Wir können jetzt schon beliebige Zeichen suchen (Zeichen-Escaping) und die Anzahl der Vorkommnisse beschränken (wie in den letzten vier Artikel gezeigt worden ist). Was uns jedoch bei der Mengenangabe noch fehlt, ist eine genauere Beschränkung. Dazu heute mehr.

Mit den zuletzt gelernten Zeichen (., ?, * und +) können wir die Anzahl der Vorkommnisse begrenzen. Leider aber nur eingeschränkt. Es gibt nur drei Grenzen: null, eins und unendlich. Das heißt konkret, dass wir kein Zeichen z.B. genau dreimal „matchen“ können. Aber zum Glück gibt es ja Regel 7.

Regel 7
Der Ausdruck vor den geschweiften Klammern kann so oft vorkommen, wie in den Klammern angegeben ist. Dazu sind zwei Grenzen nötig, die mithilfe eines Kommas getrennt werden.

Auch wenn die Definition etwas komplex klingt, haben alle, die bis hierher gelesen haben, schonmal solche Mengenangaben gesehen – nämlich im letzten Artikel. Da wurden in der Tabelle geschweifte Klammern benutzt um die bis dahin erklärten Zeichen übersichtlich darzustellen. Genug des Theoriegebrabbels, ein Beispiel:

tcr@triton ~ $ cat datei
tttraumschiff
ttraumschiff
traumschiff
raumschiff
tcr@triton ~ $ egrep "t{1}" datei
tttraumschiff
ttraumschiff
traumschiff
tcr@triton ~ $ egrep "t{2}" datei
tttraumschiff
ttraumschiff
tcr@triton ~ $ egrep "t{3}" datei
tttraumschiff
tcr@triton ~ $ egrep "t{2,3}" datei
tttraumschiff
ttraumschiff
tcr@triton ~ $ egrep "t{0,3}" datei
tttraumschiff
ttraumschiff
traumschiff
raumschiff
tcr@triton ~ $

Wer jetzt aufgepasst hat, merkt natürlich, dass man sich nicht unbedingt die ganzen anderen Zeichen und Quantoren merken muss solang man sich an die geschweiften Klammern erinnert – denn diese erledigen genau die gleiche Aufgabe. Wichtig ist, dass die Schreibweise {,m} nicht erlaubt ist. Sie ist durch {0,m} zu ersetzen. {n,} ist jedoch möglich, da es in regulären Ausdrücken kein spezielles Zeichen für unendlich gibt. Das war auch schon alles zu den geschweiften Klammern.

PS: Ihr fragt euch vielleicht, wieso man zu den geschweiften Klammern noch andere Operatoren brauchen sollte – sie machen ja das gleiche! Die Antwort ist einfach: Jeder programmiert und erstellt Skripte auf seine eigene Art und Weise. Manche finden geschweifte Klammern übersichtlicher, andere wollen weniger Zeichen tippen und benutzen lieber ein Sternchen etc.