Reguläre Ausdrücke 7: Geschweifte Klammern
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.