Syntax regulärer Ausdrücke

Aktualisiert: November 2007

Ein regulärer Ausdruck ist ein Textmuster, das aus normalen Zeichen (z. B. Buchstaben von a bis z) und Sonderzeichen, so genannten Metazeichen, besteht. Das Muster beschreibt eine oder mehrere Zeichenfolgen, für die beim Durchsuchen von Text eine Übereinstimmung gefunden werden muss.

Beispiele für reguläre Ausdrücke

Ausdruck

Entsprechungen

/^\s*$/

Eine leere Zeile.

/\d{2}-\d{5}/

Eine ID, die aus 2 Stellen, einem Bindestrich und weiteren 5 Stellen besteht.

/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/

Ein HTML-Tag.

Die folgende Tabelle enthält eine vollständige Liste der Metazeichen und deren Verhalten im Kontext von regulären Ausdrücken:

Zeichen

Beschreibung

\

Markiert das nächste Zeichen als Sonderzeichen, Literal, Rückverweis oder oktales Escapezeichen. Beispielsweise entspricht 'n' dem Zeichen "n". '\n' entspricht einem Zeilenendezeichen. Die Sequenz '\\' entspricht "\", und "\(" entspricht "(".

^

Entspricht der Position am Anfang der Eingabezeichenfolge. Wenn die multiline-Eigenschaft des RegExp-Objekts gesetzt ist, entspricht ^ auch der Position, die auf '\n' oder '\r' folgt.

$

Entspricht der Position am Ende der Eingabezeichenfolge. Wenn die multiline-Eigenschaft des RegExp-Objekts gesetzt ist, entspricht $ auch der Position vor '\n' oder '\r'.

*

Entspricht dem vorherigen Zeichen oder Teilausdruck null oder mehrere Male. Zum Beispiel entspricht zo* den Zeichenfolgen "z" und "zoo". * ist gleichbedeutend mit {0,}.

+

Entspricht dem vorherigen Zeichen oder Teilausdruck einmal oder mehrere Male. Zum Beispiel entspricht 'zo+' den Zeichenfolgen "zo" und "zoo", jedoch nicht "z". + ist gleichbedeutend mit {1,}.

?

Entspricht dem vorherigen Zeichen oder Teilausdruck null‑ oder einmal. Beispielsweise entspricht "do(es)?" der Zeichenfolge "do" in "do" oder "does". ? ? ist gleichbedeutend mit {0,1}.

{n}

n ist eine nicht negative ganze Zahl. Entspricht genau n‑mal dem Zeichen. Beispielsweise entspricht 'o{2}' nicht dem 'o' in "Bob", jedoch den zwei o's in "food".

{n,}

n ist eine nicht negative ganze Zahl. Entspricht mindestens n‑mal dem Zeichen. Beispielsweise entspricht 'o{2,}' nicht dem 'o' in "Bob", jedoch allen o's in "foooood". 'o{1,}' ist gleichbedeutend mit 'o+'. 'o{0,}' ist gleichbedeutend mit 'o*'.

{n,m}

M und n sind nicht negative ganze Zahlen, wobei n <= m ist. Entspricht dem Zeichen mindestens n-mal und höchstens m-mal. Beispielsweise entspricht "o{1,3}" den ersten drei o's in "fooooood". 'o{0,1}' ist gleichbedeutend mit 'o?'. Beachten Sie, dass Sie zwischen das Komma und die Zahlen kein Leerzeichen setzen dürfen.

?

Wenn dieses Zeichen unmittelbar auf einen der anderen Quantifizierer folgt (*, +, ?, {n}, {n,}, {n,m}), ist das Vergleichsmuster nicht gierig. Ein nicht gieriges Muster sucht nach einer Entsprechung eines möglichst kleinen Teils der gesuchten Zeichenfolge, während das standardmäßige gierige Muster nach einer Entsprechung eines möglichst großen Teil der gesuchten Zeichenfolge sucht. Beispielsweise entspricht in der Zeichenfolge "oooo" 'o+?' einem einzigen "o", während 'o+' allen "o"s entspricht.

.

Entspricht jedem beliebigen einzelnen Zeichen außer "\n". Soll die Entsprechung ein beliebiges Zeichen einschließlich '\n' sein, verwenden Sie ein Muster wie '[\s\S]'.

(muster)

Ein Teilausdruck, der muster entspricht und die Entsprechung erfasst. Die erfasste Entsprechung kann mithilfe der $0…$9-Eigenschaften aus der sich ergebenden Matches-Auflistung abgerufen werden. Sollen die Entsprechungen runde Klammern ( ) sein, verwenden Sie '\(' oder '\)'.

(?:muster)

Ein Teilausdruck, der muster entspricht, aber die Entsprechung nicht erfasst, d. h. eine Entsprechung ohne Erfassung, die nicht für die spätere Verwendung gespeichert wird. Dies ist zum Kombinieren von Teilen eines Musters mit dem "oder"-Zeichen (|) nützlich. Beispielsweise kann der Ausdruck 'industr(?:y|ies)' schneller eingegeben werden als 'industry|industries'.

(?=muster)

Ein Teilausdruck, der eine positive Lookahead-Suche durchführt, die eine Entsprechung für die Zeichenfolge an jedem Punkt sucht, an dem ein der Zeichenfolge entsprechendes Muster beginnt. Dies ist eine Entsprechung ohne Erfassung, d. h. die Entsprechung wird nicht für die spätere Verwendung gespeichert. Beispielsweise entspricht 'Windows (?=95|98|NT|2000)' "Windows" in "Windows 2000", aber nicht "Windows" in "Windows 3.1". Lookaheads verbrauchen keine Zeichen, d. h. nach dem Auftreten einer Entsprechung beginnt die Suche nach der nächsten Entsprechung unmittelbar nach der letzten Entsprechung, und nicht nach den Zeichen, die die Lookahead-Suche enthielten.

(?!muster)

Ein Teilausdruck, der eine negative Lookahead-Suche durchführt, die eine Entsprechung für die Suchzeichenfolge an jedem Punkt sucht, an dem ein nicht der Zeichenfolge entsprechendes Muster beginnt. Dies ist eine Entsprechung ohne Erfassung, d. h. die Entsprechung wird nicht für die spätere Verwendung gespeichert. Beispielsweise entspricht 'Windows (?!95|98|NT|2000)' "Windows" in "Windows 3.1", aber nicht "Windows" in "Windows 2000". Lookaheads verbrauchen keine Zeichen, d. h. nach dem Auftreten einer Entsprechung beginnt die Suche nach der nächsten Entsprechung unmittelbar nach der letzten Entsprechung, und nicht nach den Zeichen, die die Lookahead-Suche enthielten.

x|y

Entspricht entweder x oder y. Beispielsweise entspricht 'z|food' "z" oder "food". '(z|f)ood' entspricht "zood" oder "food".

[xyz]

Eine Zeichengruppe. Entspricht einem beliebigen der eingeschlossenen Zeichen. Beispiel: '[abc]' entspricht dem 'a' in "plain".

[^xyz]

Eine negative Zeichengruppe. Entspricht einem beliebigen nicht eingeschlossenen Zeichen. Beispiel: '[^abc]' entspricht dem 'p' in "plain".

[a-z]

Ein Zeichenbereich. Entspricht einem beliebigen Zeichen im angegebenen Bereich. Beispiel: '[a-z]' entspricht jedem Kleinbuchstaben im Bereich von 'a' bis 'z'.

[^a-z]

Ein negativer Zeichenbereich. Entspricht einem beliebigen Zeichen, das sich nicht im angegebenen Bereich befindet. Beispiel: '[^a-z]' entspricht jedem Buchstaben, der nicht im Bereich von 'a' bis 'z' vorhanden ist.

\b

Entspricht einer Wortgrenze, d. h. der Position zwischen einem Wort und einem Leerzeichen. Beispiel: 'er\b' entspricht dem 'er' in "never", aber nicht dem 'er' in "verb".

\B

Entspricht einer anderen als einer Wortgrenze. Beispiel: 'er\B' entspricht dem 'er' in "verb", aber nicht dem 'er' in "never".

\cx

Entspricht dem durch x angegebenen Steuerzeichen. Beispielsweise entspricht \cM STRG+M oder einem Wagenrücklaufzeichen. Der Wert von x muss im Bereich von A bis Z oder von a bis z liegen. Andernfalls wird angenommen, dass c ein literales 'c'‑Zeichen ist.

\d

Entspricht einer Ziffer. Gleichbedeutend mit [0-9].

\D

Entspricht einem anderen Zeichen als einer Ziffer. Gleichbedeutend mit [^0-9].

\f

Entspricht einem Seitenvorschubzeichen. Gleichbedeutend mit \x0c und \cL.

\n

Entspricht einem Zeilenendezeichen. Gleichbedeutend mit \x0a und \cJ.

\r

Entspricht einem Wagenrücklaufzeichen. Gleichbedeutend mit \x0d und \cM.

\s

Entspricht einem beliebigen Leerraumzeichen, z. B. Leerzeichen, Tabulator, Seitenvorschub usw. Gleichbedeutend mit [ \f\n\r\t\v].

\S

Entspricht einem anderen Zeichen als einem Leerraumzeichen. Gleichbedeutend mit [^ \f\n\r\t\v].

\t

Entspricht einem Tabulatorzeichen. Gleichbedeutend mit \x09 und \cI.

\v

Entspricht einem vertikalen Tabulatorzeichen. Gleichbedeutend mit \x0b und \cK.

\w

Entspricht einem beliebigen Wortzeichen einschließlich dem Unterstrich. Gleichbedeutend mit '[A-Za-z0-9_]'.

\W

Entspricht einem beliebigen Nichtwortzeichen. Gleichbedeutend mit '[^A-Za-z0-9_]'.

\xn

Entspricht n, wobei n ein hexadezimaler Escapewert ist. Hexadezimale Escapewerte müssen genau zwei Stellen lang sein. Beispiel: '\x41' entspricht "A". '\x041' ist gleichbedeutend mit '\x04' & "1". Ermöglicht die Verwendung von ASCII-Codes in regulären Ausdrücken.

\num

Entspricht num, wobei num eine positive ganze Zahl ist. Ein Verweis zurück auf erfasste Entsprechungen. Beispiel: '(.)\1' entspricht zwei aufeinander folgenden, identischen Zeichen.

\n

Gibt entweder einen oktalen Escapewert oder einen Rückverweis an. Wenn vor \n mindestens n erfasste Teilausdrücke stehen, ist n ein Rückverweis. Andernfalls ist n ein oktaler Escapewert, wenn n eine oktale Ziffer ist (0‑7).

\nm

Gibt entweder einen oktalen Escapewert oder einen Rückverweis an. Wenn vor \nm mindestens nm erfasste Teilausdrücke stehen, ist nm ein Rückverweis. Wenn vor \nm mindestens n erfasste Teilausdrücke stehen, ist n ein Rückverweis, auf den das Literal m folgt. Wenn keine der vorangehenden Bedingungen zutrifft, entspricht \nm dem oktalen Escapewert nm, wenn es sich bei n und m um oktale Ziffern (0-7) handelt.

\nml

Entspricht dem oktalen Escapewert nml, wenn n eine oktale Ziffer ist (0‑3) und m und l oktale Ziffern sind (0‑7).

\un

Entspricht n, wobei n ein als vier hexadezimale Ziffern dargestelltes Unicode-Zeichen ist. Beispiel: \u00A9 entspricht dem Copyright-Sonderzeichen (©).

Siehe auch

Weitere Ressourcen

Einführung in reguläre Ausdrücke