&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
abc die Zeichenkette a,
dann b, dann c.
\) eingeleitet werden.
Dies betrifft die folgenden Zeichen:
~ . ^ $ ( ) { } [ ] ? + * |
Beispielsweise findet 1\*2 die Zeichenkette
1, dann *, dann 2.
c:\\config\.sys die Zeichenkette c:\config.sys.
\n newline ASCII 10 \t tab ASCII 9 \r carriage return ASCII 13 \b backspace ASCII 8 \f formfeed \e escape ASCII 27 \x07 bel ASCII 7C- und C++-Programmierern wird diese Syntax bekannt vorkommen. Strenggenommen m�áte nach POSIX die Suchfolge
\x2e jedes
beliebige Zeichen finden, denn das ASCII-Zeichen 0x2e ist der Punkt (siehe
unten), aber diese Implementierung behandelt es als "suche nach einem Punkt".
\< "Beginn eines Wortes" (siehe unten).
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 stehtEin "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.