Regul„re Ausdr�cke (Regular Expressions, REs) werden �blicherweise benutzt, um einen komplexen Suchbegriff auf eine Gruppe von Zeichenketten anzuwenden. Sie sind daher viel flexibler als das Suchen nach reinen Zeichenketten.

&xwp; verwendet eine Kombination verschiedener Standards f�r RE-Syntaxen. Benutzern der Unix-Programme egrep und awk werden diese REs bekannt vorkommen. Erweiterungen, die durch POSIX sowie die Unix-Programme ex und vi und weitere GNU-Programme eingef�hrt wurden, werden ebenfalls unterst�tzt.

Es gelten die folgenden Regeln (siehe die BNF-Definition f�r eine formale Beschreibung):

Einfache Zeichen

Zeichengruppen

Zeichengruppen werden in eckigen Klammern angegeben und bezeichnen eine Gruppe von Zeichen, die entweder an dieser Stelle m”glich sind oder nicht m”glich sein d�rfen.

  [abc]   findet ein Zeichen, das a, b oder c sein darf
  [^abc]  findet jedes Zeichen, das nicht a, b oder c ist
  [a-z]   findet jedes Zeichen im Bereich 'a' bis 'z'
  [a-j-t] findet jedes Zeichen im Bereich 'a' bis 't'
Um in den eckigen Klammern auch die Zeichen -, ^ oder ] angeben zu k”nnen, setzt man wieder einen Schr„gstrich r�ckw„rts davor. Beispielsweise findet [\])}] die Zeichen ] oder ) oder }.

Sie k”nnen auch eine komplette POSIX-Zeichenklasse in einem zus„tzlichen Paar von eckigen Klammern mit Doppelpunkten angeben. In diesem Kontext bedeutet

  [:alnum:]   alle alphanumerischen Zeichen
              (bei ASCII: dasselbe wie A-Za-z0-9)
  [:lower:]   alle Kleinbuchstaben
  ... etc.
Geben Sie beispielsweise [[:alnum:] \t] an, um nach allen alphanumerischen Zeichen plus Leerzeichen plus Tab zu suchen.

Beliebiges Zeichen

Der Punkt (.) findet jedes beliebige einzelne Zeichen. Beispielsweise findet der Ausdruck k.nnen das Wort kennen und k”nnen, aber nicht koennen.

Wortzeichen

Ein "Wortzeichen" wird definiert als ein Zeichen, das entweder alphanumerisch ist oder ein Unterstrich (_).

\w kann benutzt werden, um ein Wortzeichen zu finden, um sich etwas Tipparbeit zu sparen. Dies entspricht dem Ausdruck [[:alnum:]_] oder [A-Za-z0-9_]. \W ist das Gegenteil und entspricht dem Ausdruck [^[:alnum:]_] oder [^A-Za-z0-9_].

Diese Kurzformen sind in Zeichengruppen (in eckigen Klammern) nicht erlaubt.

"Kein Zeichen"

Microsoft hat eine Erweiterung zu REs definiert, womit man mit einer vorangestellten Tilde (~) nach jedem Zeichen bis auf das nachstehende suchen kann. Dies ist eine Abk�rzung f�r die entsprechende Zeichengruppe in eckigen Klammern: ~a ist k�rzer als [^a]. Bespielsweise findet k~ennen die Kette k”nnen, aber nicht kennen.

Anker

Anker geben eine Bedingung an, wo ein Ausdruck stehen darf:

  ^       findet den Ausdruck, wenn er am Anfang steht
  $       findet den Ausdruck, wenn er am Ende steht
  \`      GNU-Alternative zu ^
  \'      GNU-Alternative zu $
  \<      findet den Ausdruck, wenn er am Anfang eines Wortes steht
  \>      findet den Ausdruck, wenn er am Ende eines Wortes steht
  \B      findet den Ausdruck, wenn er innerhalb eines Wortes steht
  \y      findet den Ausdruck, wenn er am Anfang oder am Ende eines Wortes steht
Ein "Wort" f„llt hier unter die gleiche Definition wie oben angegeben.

Beispielsweise findet ^xyz die Kette xyz nur, wenn sie am Anfang einer Zeile steht. \<fred findet fred und freddy, aber nicht alfred.

Wiederholungen

Mit den Zeichen ?, +, {M} oder {M,N} kann nach Wiederholungen gesucht werden.

  ab?c      a, dann keine oder eine Wiederholung von b, dann c
  ab+c      a, dann eine oder mehrere Wiederholungen von b, dann c
  ab*c      a, dann keine oder beliebige Wiederholungen von b, dann c
  ab{M}c    a, dann M Wiederholungen von b, dann c
  ab{M,}c   a, dann M oder mehr Wiederholungen von b, dann c
  ab{M,N}c  a, dann zwischen M und N Wiederholungen von b, dann c
M und N m�ssen dabei dezimale Ziffern sein, und wenn sowohl M als auch N angegeben ist, muá M <= N sein.

Beispiel: [A-Za-z_][A-Za-z0-9_]* findet jeden erlaubten C- oder C++-Bezeichner. \w{10,} findet eine Zeichenkette, wenn diese aus wenigstens 10 Wortzeichen besteht. \<[0-9]{5}\> findet eine f�nfstellige Zahl.

Alternativen

Mit dem |-Zeichen kann man nach etwas oder etwas anderem suchen. Beispielsweise findet fred|bill die Kette fred oder bill. fred|bill|rob findet jeden der drei Namen.

Verschachtelte Ausdr�cke

Mit runden Klammern k”nnen REs gruppiert werden, um Operatoren wie Wiederholungen oder Alternativen genau zu bezeichnen. Beispielsweise findet (frosch|kr”te)+ eine oder mehrere Wiederholungen von entweder frosch oder kr”te.

Klammern k”nnen mehrfach geschachtelt werden.

R�ckbeziehung

Jedesmal, wenn ein RE auf eine Zeichenkette paát, wird die gefundene Zeichenkette intern gespeichert. Sie k”nnen sich auf diese gespeicherte Zeichenkette r�ckbeziehen, d.h. was vorher gepaát hat, soll noch einmal passen, indem Sie einen Schr„gstrich r�ckw„rts mit einer Dezimalziffer eingeben. So kann auf bis zu 9 REs zugegriffen werden.

Beispielsweise besagt \2, daá der zweite Klammersatz noch einmal vorkommen muá. So findet der Ausdruck (a|b)(c|d)\2\1 die Zeichenkette acca oder adda oder bcca oder bddb.

Beachten Sie, daá das obige Beispiel keine Abk�rzung f�r (a|b)(c|d)(c|d)(a|b) ist. Die R�ckbeziehungen beziehen sich nicht auf den Ausdruck, sondern dasjenige, was von dem Ausdruck gefunden wurde.

R�ckbeziehungen k”nnen ebenfalls geschachtelt werden. Beispielsweise findet frosch|((a|bc)d\1) die Zeichenketten frosch oder ada oder bcdbc, aber nicht adbc.