Beruflich Dokumente
Kultur Dokumente
Motivation Basismengen
Reguläre Ausdrücke (regular expressions) sind neben den formalen Grammatiken Die Algebra der regulären Ausdrücke ist gegeben durch RA = (BR, KR, OR, GR) mit
eine weitere Methode zum Beschreiben von Mengen von Wörtern über einer
endlichen Menge von Symbolen. Sie erlauben einfach gebaute Wortmengen kürzer BR = { S, S*, R, P(S*) }
und einfacher zu notieren als mit Hilfe einer formalen Grammatik. Aus diesem
wobei S eine endliche Menge von Symbolen (oder Zeichen), S* die Menge aller
Grunde haben regulären Ausdrücke vielfältige Anwendungen in der Informatik, z.B.
Ketten von Symbolen (der Wörter über den Symbolen), R die Menge der regulären
in Editoren gefunden. Aber auch viele moderne Programmiersprachen (insbe-
Ausdrücke und P(S*) die Potenzmenge zur Menge der Symbolketten ist. Die Menge
sondere Skriptsprachen)— wie z.B. Perl — erlauben die Verwendung regulärer
R wird später definiert.
Ausdrücke als eingebautes Sprachmittel.
KR = { !S* , !R , " }
Reguläre Ausdrücke entstanden aus den in den 50er Jahren des letzten Jahrhun-
derts von Stephen Kleene beschriebenen „regulären Mengen”. Um 1968 wurde von d.h. ausgezeichnete Elemente der Algebra sind der leere String !S* # S*, der leere
Ken Thompson — einem der Erfinder von Unix — ein auf diesen „regulären reguläre Ausdruck !R # R und die leere Menge " # P(S*) .
Mengen” basierender Suchalgorithmus in den Texteditor ed eingebaut. Aufgrund der
vielfältigen Verwendbarkeit entwickelte sich daraus das eigenständige Programm
grep (global regular expression print).
Horst Hansen FHTW Berlin 2007 Horst Hansen FHTW Berlin 2007
Regulaere Ausdruecke 1/12 Regulaere Ausdruecke 2/12
Horst Hansen FHTW Berlin 2007 Horst Hansen FHTW Berlin 2007
Regulaere Ausdruecke 3/12 Regulaere Ausdruecke 4/12
Reguläre Ausdrücke Algebra der regulären Ausdrücke
Beispiele algebraische Gesetze (Auszug)
Regulärer Ausdruck für eine zweistellige ganze Zahl:
(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9) Identität für die Konkatenation: !R r = r !R = r
Beweis durch Ausrechnen der Interpretationsfunktion: Kommutativität der Vereinigung: r|s=s|r
L(((1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)) = Assoziativität der Vereinigung: (r | s) | t = r | (s | t)
{ xy | x # L(1|2|3|4|5|6|7|8|9) ,
Assoziativität der Konkatenation: (rs)t = r(st)
y # L(0|1|2|3|4|5|6|7|8|9) } =
{ xy | x # { 1,2,3,4,5,6,7,8,9 } , Linksdistributivität der
y # { 0,1,2,3,4,5,6,7,8,9 } } Konkatenation über die Vereinigung: r(s | t) = rs | rt
Rechtsdistributivität der
Konkatenation über die Vereinigung: (s | t)r = sr | tr
Regulärer Ausdruck für eine Dualzahl mit höchstens 4 Stellen ohne führende
Nullen: Idempotenz der Vereinigung: r|r=r
1(0|1)(0|1)(0|1)
Beweis durch Ausrechnen der Interpretationsfunktion.
Horst Hansen FHTW Berlin 2007 Horst Hansen FHTW Berlin 2007
Regulaere Ausdruecke 5/12 Regulaere Ausdruecke 6/12
Horst Hansen FHTW Berlin 2007 Horst Hansen FHTW Berlin 2007
Regulaere Ausdruecke 7/12 Regulaere Ausdruecke 8/12
Reguläre Ausdrücke Reguläre Ausdrücke
Zusätzliche Operatoren in UNIX-Umgebungen Beispiele mit erweiterter Notation
In Unix-Umgebungen sind oft zusätzlich zwei weitere Operatoren zum Formulieren Beschreibung von natürlichen Zahlen in Dezimalschreibweise ohne führende Nullen
von Regulären Ausdrücken definiert: [1-9][0-9]* | 0
? optionales Auftreten des Ausdrucks, d.h. höchstens einmal Beschreibung aller Wörter, die alle Vokale in alphabetischer Reihenfolge mindestens
einmal enthalten
+ mindestens einmaliges Auftreten des Ausdrucks
.*a.*e.*i.*o.*u.*
Beschreibung aller Wörter, die auf "ung" enden und am Zeilenende auftreten
Beispiele:
.*ung$
r?s Dieser Reguläre Ausdrück bezeichnet das Gleiche wie s | rs .
Beschreibung aller ganzen Zahlen in Dualzahldarstellung (ohne führende Nullen)
r+ Dieser Reguläre Ausdruck bezeichnet fast das Gleiche wie r*; nur das leere 1[01]* | 0 oder 1(0|1)* | 0
Wort ist in der Wortmenge nicht enthalten.
Horst Hansen FHTW Berlin 2007 Horst Hansen FHTW Berlin 2007
Regulaere Ausdruecke 9/12 Regulaere Ausdruecke 10/12
Horst Hansen FHTW Berlin 2007 Horst Hansen FHTW Berlin 2007
Regulaere Ausdruecke 11/12 Regulaere Ausdruecke 12/12