i

Exkurs - Reguläre Ausdrücke in der Praxis

Vorbemerkung

Reguläre Ausdrücke kommen häufig in der Praxis vor. Zur Darstellung regulärer Ausdrücke werden dabei aber oft zusätzliche Metasymbole benutzt. Im Folgenden sollen gebräuchliche Schreibweisen und ihre Bedeutung anhand von Beispielen erläutert werden.

Beachte, dass es neben den hier gezeigten Schreibweisen noch weitere gibt und dass die Gesamtheit aller benutzbaren Symbole nicht einheitlich gehandhabt wird. Du musst gegebenenfalls also in einem Nachschlagewerk weitere Details nachlesen.

Zeichen und Zeichenmengen

Ein einzelnes Zeichen wie z.B. a ist bereits ein regulärer Ausdruck. Es beschreibt die Menge {a} bestehend aus dem einzigen Wort a.

Will man mit einem regulären Ausdruck ein Zeichen beschreiben, das auch als Metasymbol benutzt wird, so muss man das Zeichen mit einem \ maskieren. Der reguläre Ausdruck \+ beschreibt also die Menge {+} bestehend aus dem Wort +.

Mit Hilfe eckiger Klammern kann man reguläre Ausdrücke bilden, die Zeichenmengen beschreiben. Die einfachste Möglichkeit besteht darin, innerhalb der eckigen Klammern alle gewünschten Zeichen aufzulisten. So beschreibt der reguläre Ausdruck [hsv] die Menge der Ein-Zeichen-Wörter {h, s, v}. Innerhalb der eckigen Klammern kann man auch ganze Zeichenbereiche erfassen. Der reguläre Ausdruck [a-z] beschreibt die Menge der Ein-Zeichen-Wörter {a, b, ..., y, z}.

Mit dem Symbol ^ lassen sich Komplemente von Zeichenmengen bilden. Der reguläre Ausdruck [^0-9] beschreibt die Menge der Ein-Zeichen-Wörter, die nicht mit einem der Zeichen aus {0, 1, ..., 8, 9} übereinstimmen.

regulärer Ausdruck Bedeutung
[hsv] {h, s, v}
[\[x\+y\]] {[, x, +, y, ]}
[a-z] {a, b, ..., y, z}
[a-z0-9] {a, b, ..., y, z, 0, 1, ..., 8, 9}
[^0-9] Z - {0, 1, ..., 8, 9}; Menge Z aller Zeichen ohne 0, ..., 9

Konkatenation

Reguläre Ausdrücke kann man aneinanderhängen (konkatenieren). Wenn man zwei reguläre Ausdrücke A und B aneinanderhängt (konkateniert), so entsteht hierdurch ein neuer regulärer Ausdruck AB, der alle Wörter beschreibt, deren Anfang zum ersten regulären Ausdruck A passt und deren Ende zum zweiten regulären Ausdruck B passt. So beschreibt der reguläre Ausdruck [a-z][0-9] die Menge aller Wörter, die mit einem Zeichen aus {a, ..., z} beginnen und mit einem Zeichen aus {0, ..., 9} enden, also z.B. u2.

regulärer Ausdruck Bedeutung
K2 {K2}
[a-z][0-9] {a0, ..., a9, b0, ..., b9, ..., z0, ..., z9}
1[0-9]1 {101, 111, 121, 131, 141, 151, 161, 171, 181, 191}

Iteration

Wiederholtes Aneinanderhängen regulärer Ausdrücke kann man mit den Metasymbolen * und + beschreiben. Ein regulärer Ausdruck der Gestalt A*, bei dem auf einen regulären Ausdruck A das Metasymbol * folgt, beschreibt all die Wörter, die durch wiederholtes (auch keinmaliges) Aneinanderhängen von Wörtern passend zu A entstehen. Ein regulärer Ausdruck der Gestalt A+ beschreibt all die Wörter, die durch wiederholtes (mindestens einmaliges) Aneinanderhängen von Wörtern passend zu A entstehen. So beschreibt der reguläre Ausdruck a* die Menge {λ, a, aa, aaa, aaaa, ...}, die auch das leere Wort λ enthält und der reguläre Ausdruck a+ die Menge {a, aa, aaa, aaaa, ...}.

regulärer Ausdruck Bedeutung
a* {λ, a, aa, aaa, aaaa, ...}
a+ {a, aa, aaa, aaaa, ...}
[0-9]+ {0, ..., 9, 00, ..., 99, 000, ..., 999, ...}
1[01]*1 {11, 101, 111, 1001, 1011, 1101, 1111, 10001, ...}

Option

Mit Hilfe des Metasymbols ? kann man optionales Vorkommen (d.h. einmaliges oder keinmaliges Vorkommen) von Wörtern beschreiben. Ein regulärer Ausdruck der Gestalt A? beschreibt alle Wörter aus A und zusätzlich das leere Wort λ.

regulärer Ausdruck Bedeutung
b? {λ, b}
ab?c {ac, abc}
[\+\-]?[0-9]+ {0, +0, -0, 1, +1, -1, ...}

Alternative

Eine Alternative wird mit Hilfe des Metasymbols | beschrieben. Wenn man zwei reguläre Ausdrücke A und B mit dem Metasymbol | verknüpft, so entsteht hierdurch ein neuer regulärer Ausdruck A|B, der alle Wörter beschreibt, die zum ersten regulären Ausdruck A passen oder zum zweiten regulären Ausdruck B passen. So beschreibt der reguläre Ausdruck [a-c]|[0-2] die Menge {a, b, c, 0, 1, 2} und ist also gleichbedeutend zum regulären Ausdruck [a-c0-2].

regulärer Ausdruck Bedeutung
a|b {a, b}
[a-c]|[0-2] {a, b, c, 0, 1, 2}

Bindungsstärke und Gruppierung

Der reguläre Ausdruck a|bc+ ist gleichbedeutend mit dem regulären Ausdruck a|(b(c+)). Im regulären Ausdruck a|(b(c+)) werden runde Klammern benutzt, um Zeichenfolgen zu gruppieren und auf diese Weise die Reihenfolge der Operatorauswertung festzulegen. Im regulären Ausdruck a|bc+ wird diese Reihenfolge durch die vordefinierte Bindungsstärke der Metasymbole festgelegt: Die Operatoren *, +, ? binden stärker als die Konkatenation, der Operator | schwächer als die Konkatenation.

regulärer Ausdruck Bedeutung
ab+ {ab, abb, abbbb, ...}
(ab)+ {ab, abab, ababab, ...}
ab|c {ab, c}
a(b|c) {ab, ac}

Suche

v
4.2.2.3.2
dev.inf-schule.de/automaten-sprachen/sprachenundautomaten/sprachbeschreibung/regulaereausdruecke/exkurs_regulaereausdruecke
dev.inf-schule.de/4.2.2.3.2
dev.inf-schule.de/@/page/4fiOpvAn1ONNoxHZ

Rückmeldung geben