Reguläre Ausdrücke (Abk. RegExp, engl. regular expression) bilden eine Familie von kompakten, leistungsfähigen formalen Sprachen mit denen sich (Unter-)Mengen von Zeichenketten beschreiben lassen. Diese Sprachen werden von vielen Texteditoren und Hilfsprogrammen (hauptsächlich unter Unix) verwendet, um bestimmte Muster zu suchen und dann durch etwas anderes zu ersetzen oder eine Aktion auszuführen. Programme, die reguläre Ausdrücke benutzen, sind z. B. egrep, sed und awk, aber auch in Programmiersprachen wie Perl und Tcl, oder Texteditoren wie Emacs und vi lassen sich reguläre Ausdrücke verwenden.
Reguläre Ausdrücke werden in der Theorie der formalen Sprachen untersucht. Eine formale Sprache ist durch eine Menge von Zeichenketten beschrieben. In der Theorie untersucht und klassifiziert man diese Mengen. Der Mathematiker Stephen Kleene benutzte eine Notation, die er reguläre Mengen nannte. Ken Thompson nutzte diese Notation um qed (eine Vorgängerversion des Unix-Editors ed) zu bauen und später das Werkzeug grep zu schreiben. Seither implementieren sehr viele Programme Funktionen um reguläre Ausdrücke zu nutzen.
Viele davon benutzen die regex-Bibliothek von Henry Spencer oder PCRE von Philip Hazel.
Mit regulären Ausdrücken kann man die Grammatik einer regulären Sprache beschreiben. Sie entspricht dem Typ 3 der Grammatiken in der Chomsky-Hierarchie.
Das bedeutet, dass man damit die Morphologie einer natürlichen Sprache beschreiben kann.
Eine häufige Anwendung regulärer Ausdrücke besteht darin, spezielle Zeichenketten in einer Menge von Zeichenketten zu finden.
Die im Folgenden angegebene Beschreibung ist eine (oft benutzte) Konvention, um Konzepte wie Zeichenklasse, Quantifizierung, Verknüpfung und Zusammenfassen konkret zu realisieren.
Hierbei wird ein regulärer Ausdruck aus den Zeichen des zugrunde liegenden Alphabets in Kombination mit so genannten Metazeichen ("[", "]", "(", ")", "?", "+", "*", "^", "$", "/") gebildet.
Alle übrigen Zeichen des Alphabets stehen für sich selbst.
Zeichenklassen erlauben es, mehr als ein Zeichen an einer bestimmten Position der Zeichenkette zuzulassen:
. : (d.h. ein Punkt) jedes beliebige Zeichen
[Aa] : entweder "A" oder "a"
[egh] : eines der Zeichen "e", "g" oder "h"
[0-6] : eine Ziffer von "0" bis "6"
[A-Za-z0-9] : ein beliebiger Buchstabe oder eine beliebige Ziffer
[^a] : ein beliebiges Zeichen außer "a"
Es gibt auch vordefinierte Zeichenklassen wie z. B.:
/d : eine Zahl [0-9]
/D : keine Zahl [^0-9]
/w : ein Buchstabe, eine Zahl oder der Unterstrich [a-zA-Z_0-9]
/W : kein Buchstabe, keine Zahl und kein Unterstrich [^/w]
Quantifizierer erlauben es, den vorherigen Ausdruck in verschiedener Vielfachheit in der Zeichenkette zuzulassen:
? : der voranstehenden Ausdruck ist optional, er kann einmal vorkommen, muss es aber nicht
+ : der voranstehenden Ausdruck muss mindestens einmal vorkommen, darf aber auch mehrfach vorkommen
* : der voranstehenden Ausdruck darf beliebig oft (auch keinmal) vorkommen
Beispielsweise erlaubt "a+" ein "a" oder ein "aa" oder auch "aaaa", etc.
Dagegen erlaubt "[ab]+" ein "a", "b", "aa", "baab", etc.
Ausdrücke lassen sich mit runden Klammern "(" und ")" zusammenfassen:
Etwa erlaubt "(abc)+" ein "abc" oder ein "abcabc", etc.
Man kann alternative Ausdrücke durch Verknüpfung mit dem "|"-Symbol zulassen:
(ABC)|(abc) : "ABC" oder "abc", aber nicht "Abc".
Um die oft auf Textdateien bezogenen Anwendungen auf dem Computer zu unterstützen, werden in der Regel die folgenden Sonderzeichen definiert:
^ : steht für den Zeilenanfang
$ : steht für das Zeilenende
/b : steht für die leere Zeichenkette am Wortanfang oder am Wortende
/B : steht für die leere Zeichenkette, die NICHT den Anfang oder das Ende eines Wortes bildet
/< : steht für die leere Zeichenkette am Wortanfang
/> : steht für die leere Zeichenkette am Wortende
Jedes der Metazeichen kann durch das "/"-Symbol aufgehoben werden.
Beispielsweise lässt der Ausdruck "(A/*)+" die Zeichenketten "A*", "A*A*", etc. zu.
Dieser Beitrag ist aus der XML-Version der deutschen WikiPedia® entwickelt worden und unterliegt inhaltlich den GNU FDL-Lizenzbestimmungen. Linkziele außerhalb der wikipedia-Inhalte unterliegen den Urheberrechten der jeweiligen Anbieter
( DirectDownloads ) Kalenderblätter druckfertig aufbereitet für Schmuckblätter zum Selbstdrucken im Word DOC6/RTF Format, je Euro 5 über Click&BuyJAN | FEB | MÄRZ APRIL | MAI | JUNI JULI | AUG | SEPT OKT | NOV | DEZ
Das Geschenk für jeden Anlass, nicht nur bei 'runden' Jubiläen Andere Einzeltage oder Zahlungsarten bitte HIER bestellen
Diese Web Site verdient ihr Geld durch Produktverkäufe (CD-ROM, downloads) und in erster Linie durch Anzeigen. Wenn Sie als Webmaster zuverlässige Partner suchen für Ihr eigenes Anzeigenschäft, dürfen Sie sich gerne auf unsere Empfehlungen stützen:
z.B.: GigaCash & ProfiWin