Freigeben über


Syntax regulärer Ausdrücke

Ein regulärer Ausdruck beschreibt eine oder mehrere Zeichenfolgen, für die beim Durchsuchen eines Textkörpers eine Übereinstimmung gefunden werden soll. Der Ausdruck dient als Vorlage zum Vergleichen eines Zeichenmusters mit der Zeichenfolge, die gesucht wird.

Ein regulärer Ausdruck besteht aus normalen Zeichen (z. B. Buchstaben von a bis z) und Sonderzeichen, so genannten Metazeichen.

Sonderzeichen

Die folgende Tabelle enthält eine Liste der Metazeichen, die aus einem Zeichen bestehen, und deren Verhalten im Kontext von regulären Ausdrücken.

Tipp

Um Entsprechungen für eines dieser Sonderzeichen zu finden, müssen Sie das Zeichen mit einem Escapezeichen versehen werden, d. h. Sie müssen ihm einen umgekehrten Schrägstrich (\) voranstellen. Um beispielweise das Literalzeichen "+" zu suchen, können Sie den Ausdruck "\+" verwenden.

Metazeichen

Verhalten

Beispiel

*

Entspricht dem vorherigen Zeichen oder Teilausdruck null oder mehrere Male.

Entspricht {0,}.

zo* entspricht "z" und "zoo".

+

Entspricht dem vorherigen Zeichen oder Teilausdruck einmal oder mehrere Male.

Entspricht {1,}.

zo+ entspricht "zo" und "zoo", aber nicht "z".

?

Entspricht dem vorherigen Zeichen oder Teilausdruck null‑ oder einmal.

Entspricht {0,1}.

When ? folgt direkt einem anderen Quantifizierer (*, +, ?, {n}, {n,} oder {n,m}), das entsprechende Muster ist nicht gierig. Ein nicht gieriges Muster sucht eine möglichst geringe Übereinstimmung mit der gesuchten Zeichenfolge. Das standardmäßige gierige Muster sucht eine möglichst hohe Übereinstimmung mit der gesuchten Zeichenfolge.

zo? entspricht "z" und "zo", aber nicht "zoo".

o+? entspricht einem einzelnen "o" in "oooo", und o+ entspricht allen Vorkommen von "o ".

do(es)? entspricht dem "do" in "do" oder "does".

^

Entspricht der Position am Anfang der gesuchten Zeichenfolge. Wenn das Zeichen m (mehrzeilige Suche) in den Flags enthalten ist, entspricht ^ auch der Position nach \n oder \r.

Bei Verwendung als erstes Zeichen in einem Klammerausdruck negiert ^ den Zeichensatz.

^\d{3} entspricht 3 numerischen Ziffern am Anfang der gesuchten Zeichenfolge.

[^abc] entspricht jedem Zeichen mit Ausnahme von a, b und c.

$

Entspricht der Position am Ende der gesuchten Zeichenfolge. Wenn das Zeichen m (mehrzeilige Suche) in den Flags enthalten ist, entspricht ^ auch der Position vor \n oder \r.

\d{3}$ entspricht 3 numerischen Ziffern am Ende der gesuchten Zeichenfolge.

.

Entspricht einem beliebigen einzelnen Zeichen mit Ausnahme des Zeilenendezeichens \n. Soll die Entsprechung ein beliebiges Zeichen einschließlich \n sein, verwenden Sie ein Muster wie [\s\S].

a.c entspricht "abc", "a1c" und "a-c".

[]

Markiert den Beginn und das Ende eines Klammerausdrucks.

[1-4] entspricht "1", "2", "3" oder "4." [^aAeEiIoOuU] entspricht allen Zeichen, die keine Vokale sind.

{}

Markiert den Beginn und das Ende eines Quantifiziererausdrucks.

a{2,3} entspricht "aa" und "aaa".

()

Markiert den Beginn und das Ende eines Teilausdrucks. Teilausdrücke können für die spätere Verwendung gespeichert werden.

A(\d) vergleicht "A0" mit "A9." Die Ziffer wird für die spätere Verwendung gespeichert.

|

Gibt die Möglichkeit einer Auswahl zwischen zwei oder mehr Elementen an.

z|food entspricht "z" oder "food". (z|f)ood entspricht "zood" oder "food".

/

Deutet auf den Beginn oder das Ende eines Musters für einen literalen, regulären Ausdruck in JScript hin. Nach dem zweiten Vorkommen von "/" können Einzelzeichenflags hinzugefügt werden, um das Suchverhalten anzugeben.

/abc/gi ist ein literaler regulärer JScript-Ausdruck, der "abc" entspricht. Das (globale) g-Flag gibt an, alle Vorkommen des Musters zu suchen, und das i-Flag (Ignorieren der Groß- und Kleinschreibung) gibt an, dass die Groß- und Kleinschreibung bei der Suche nicht berücksichtigt werden soll.

\

Markiert das nächste Zeichen als Sonderzeichen, Literal, Rückverweis oder oktales Escapezeichen.

\n entspricht einem Zeilenendezeichen. \( entspricht "(". \\ entspricht "\".

Die meisten Sonderzeichen verlieren ihre spezielle Bedeutung und stellen normale Zeichen dar, wenn sie innerhalb eines Klammerausdrucks auftreten. Weitere Informationen finden Sie in "Zeichen in Klammerausdrücken" in Listen von entsprechenden Zeichen.

Metazeichen

Die folgende Tabelle enthält eine Liste der Metazeichen, die aus mehreren Zeichen bestehen, und deren Verhalten im Kontext von regulären Ausdrücken.

Metazeichen

Verhalten

Beispiel

\b

Entspricht einer Wortgrenze, d. h. der Position zwischen einem Wort und einem Leerzeichen.

er\b entspricht dem "er" in "never", aber nicht dem "er" in "verb".

\B

Entspricht einer Nicht-Wortgrenze.

er\B entspricht dem "er" in "verb", aber nicht dem "er" in "never".

\d

Entspricht einer Ziffer.

Entspricht [0-9].

In der gesuchten Zeichenfolge "12 345" entspricht \d{2} "12" und "34". \d entspricht "1", 2", "3", "4" und "5".

\D

Entspricht einem anderen Zeichen als einer Ziffer.

Entspricht [^0-9].

\D+ entspricht "abc" und " def" in "abc123 def".

\w

Entspricht einem beliebigen der folgenden Zeichen: A-Z, a-z, 0-9 und Unterstrich.

Entspricht [A-Za-z0-9_].

In der gesuchten Zeichenfolge "The quick brown fox…" entspricht \w+ "The", "quick", "brown" und "fox".

\W

Entspricht allen Zeichen mit Ausnahme von A-Z, a-z, 0-9 und Unterstrich.

Entspricht [^A-Za-z0-9_].

In der gesuchten Zeichenfolge "The quick brown fox…" entspricht \W+ "…" und allen Leerzeichen.

[xyz]

Eine Zeichengruppe. Entspricht jedem der angegebenen Zeichen.

[abc] entspricht dem "a" in "plain".

[^xyz]

Eine negative Zeichengruppe. Entspricht jedem Zeichen, das nicht angegeben wurde.

[^abc] entspricht dem "p", "l", "i" und "n" in "plain".

[a-z]

Ein Zeichenbereich. Entspricht einem beliebigen Zeichen im angegebenen Bereich.

[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.

[^a-z] entspricht jedem Zeichen, das nicht im Bereich von "a" bis "z" liegt.

{n}

Entspricht genau n‑mal dem Zeichen. n ist eine nicht negative ganze Zahl.

o{2} entspricht nicht dem "o" in "Bob", jedoch den zwei "o" in "food".

{n,}

Entspricht mindestens n‑mal dem Zeichen. n ist eine nicht negative ganze Zahl.

* entspricht {0,}.

+ entspricht {1,}.

o{2,} entspricht nicht dem "o" in "Bob", jedoch allen "o" in "foooood".

{n,m}

Entspricht dem Zeichen mindestens n-mal und höchstens m-mal. n und m sind nicht negative ganze Zahlen, wobei n <= m ist. Es darf keinen Leerraum zwischen dem Komma und den Zahlen geben.

? entspricht {0,1}.

In der gesuchten Zeichenfolge"1234567" entspricht \d{1,3} "123", "456" und "7".

(Muster)

Sucht Übereinstimmungen mit Muster und speichert die Übereinstimmung. Sie können die gespeicherte Übereinstimmung aus den Arrayelementen abrufen, die von der exec Method in JScript zurückgegeben werden. Sollen die Entsprechungen runde Klammern ( ) sein, verwenden Sie "\(" oder "\)".

(Chapter|Section) [1-9] entspricht "Chapter 5", und "Chapter" wird für die spätere Verwendung gespeichert.

(?:Muster)

Sucht Übereinstimmungen mit Muster, aber die Übereinstimmung wird nicht gespeichert, d. h. die Übereinstimmung wird nicht für eine mögliche spätere Verwendung gespeichert. Dies ist zum Kombinieren von Teilen eines Musters mit dem "oder"-Zeichen (|) nützlich.

industr(?:y|ies) entspricht industry|industries.

(?=Muster)

Positives Lookahead. Nachdem eine Übereinstimmung gefunden wurde, startet die Suche nach der nächsten Übereinstimmung vor dem gefundenen Text. Die Übereinstimmung wird nicht für die spätere Verwendung gespeichert.

^(?=.*\d).{4,8}$ wendet die Einschränkung an, dass ein Kennwort 4 bis 8 Zeichen lang sein und mindestens eine Ziffer enthalten muss.

Innerhalb des Musters sucht .*\d eine beliebige Anzahl von Zeichen gefolgt von einer Ziffer. Für die gesuchte Zeichenfolge "abc3qr" entspricht dies "abc3".

Beim Starten vor statt nach dieser Übereinstimmung entspricht .{4,8} einer Zeichenfolge von 4 - 8 Zeichen. Dies entspricht "abc3qr".

^ und $ geben die Positionen am Start und dem Ende der gesuchten Zeichenfolge an. Auf diese Weise wird eine Übereinstimmung verhindert, wenn die gesuchte Zeichenfolge außerhalb der übereinstimmenden Zeichen weitere Zeichen enthält.

(?!Muster)

Negatives Lookahead. Sucht eine Übereinstimmung mit einer Suchzeichenfolge, die nicht mit Muster übereinstimmt. Nachdem eine Übereinstimmung gefunden wurde, startet die Suche nach der nächsten Übereinstimmung vor dem gefundenen Text. Die Übereinstimmung wird nicht für die spätere Verwendung gespeichert.

\b(?!th)\w+\b entspricht Wörtern, die nicht mit "th" beginnen.

Innerhalb des Musters entspricht \b einer Wortgrenze. Für die gesuchte Zeichenfolge " quick " entspricht dies dem ersten Leerzeichen. (?!th) entspricht einer Zeichenfolge, die nicht "th" ist. Dies entspricht "qu".

Beim Starten vor dieser Übereinstimmung entspricht \w+ einem Wort. Dies entspricht "quick".

\cx

Entspricht dem durch x angegebenen Steuerzeichen. Der Wert von x muss im Bereich von A-Z oder a-z liegen. Andernfalls wird angenommen, dass c ein literales "c"-Zeichen ist.

\cM entspricht CTRL+M oder einem Wagenrücklaufzeichen.

\xn

Entspricht n, wobei n ein hexadezimaler Escapewert ist. Hexadezimale Escapewerte müssen genau zwei Ziffern lang sein. Ermöglicht die Verwendung von ASCII-Codes in regulären Ausdrücken.

\x41 entspricht "A". \x041 entspricht "\x04" gefolgt von "1", (da n genau aus 2 Ziffern bestehen muss).

\num

Entspricht num, wobei num eine positive ganze Zahl ist. Dies ist ein Verweis auf gespeicherte Übereinstimmungen.

(.)\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).

(\d)\1 entspricht zwei aufeinander folgenden, identischen Ziffern.

\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 dieser Bedingungen zutrifft, entspricht \nm dem oktalen Escapewert nm, wenn es sich bei n und m um oktale Ziffern (0-7) handelt.

\11 entspricht einem Tabulatorzeichen.

\nml

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

\011 entspricht einem Tabulatorzeichen.

\un

Entspricht n, wobei n ein als vier hexadezimale Ziffern dargestelltes Unicode-Zeichen ist.

\u00A9 entspricht dem Copyrightsymbol (©).

Nicht druckbare Zeichen

Die folgende Tabelle enthält die Escapesequenzen, die nicht druckbare Zeichen darstellen.

Zeichen

Entsprechungen

Entspricht

\f

Seitenvorschubzeichen.

\x0c und \cL

\n

Zeilenendemarke

\x0a und \cJ

\r

Wagenrücklaufzeichen

\x0d und \cM

\s

Beliebiges Leerraumzeichen. Dies schließt Leerzeichen, Tabulatorzeichen und Seitenvorschubzeichen ein.

[ \f\n\r\t\v]

\S

Jedes Zeichen, das kein Leerraumzeichen ist.

[^ \f\n\r\t\v]

\t

Tabulatorzeichen

\x09 und \cI

\v

Vertikales Tabstoppzeichen.

\x0b und \cK

Rangfolge

Ein regulärer Ausdruck wird ähnlich wie ein arithmetischer Ausdruck ausgewertet, d. h. von links nach rechts, und folgt einer bestimmten Rangfolge.

Die folgenden Tabelle enthält die Rangfolge der verschiedenen Operatoren für reguläre Ausdrücke in absteigender Reihenfolge.

Operator oder Operatoren

Beschreibung

\

Escape

(), (?:), (?=), []

Runde und eckige Klammern

*, +, ?, {n}, {n,}, {n,m}

Quantifizierer

^, $, \anymetacharacter

Anchor und Sequenzen

|

Alternierung

Zeichen haben eine höhere Rangfolge als der Alternierungsoperator, sodass "m|food" beispielsweise "m" oder "food" entsprechen kann.

Siehe auch

Konzepte

Erstellen eines regulären Ausdrucks