Freigeben über


Sprachelemente für reguläre Ausdrücke

Reguläre Ausdrücke sind Muster, für die das Modul für reguläre Ausdrücke eine Entsprechung im Eingabetext sucht. Muster können aus einem oder mehr Zeichenliteralen, Operatoren oder Konstrukten bestehen. Eine kurze Einführung finden Sie unter Reguläre Ausdrücke von .NET Framework.

Jeder Abschnitt dieser Kurzübersicht enthält eine bestimmte Kategorie von Zeichen, Operatoren oder Konstrukten, mit denen Sie reguläre Ausdrücke definieren können:

  • Escapezeichen

  • Zeichenklassen

  • Anchor

  • Gruppierungskonstrukte

  • Quantifizierer

  • Rückverweiskonstrukte

  • Alternierungskonstrukte

  • Ersetzungen

  • Verschiedene Konstrukte

Escapezeichen

Der umgekehrte Schrägstrich (\) in einem regulären Ausdruck gibt an, dass es sich bei dem darauf folgenden Zeichen um ein Sonderzeichen (wie in der folgenden Tabelle angezeigt) handelt oder dass das Zeichen als solches interpretiert werden soll. Weitere Informationen finden Sie unter Escapezeichen.

Escapezeichen

Beschreibung

Muster

Entsprechungen

\a

Entspricht einem Klingelzeichen (Warnsignal) \u0007.

\a

"\u0007" in "Fehler!" + '\u0007'

\b

Entspricht in einer Zeichenklasse einem Rücktastenzeichen \u0008.

[\b]{3,}

"\b\b\b\b" in "\b\b\b\b"

\t

Entspricht einem Tabstoppzeichen \u0009.

(\w+)\t

"Element1\t", "Element2\t" in "Element1\tElement2\t"

\r

Entspricht einem Wagenrücklaufzeichen \u000D. (\r entspricht nicht dem Zeilenumbruchzeichen \n.)

\r\n(\w+)

"\r\nDies" in "\r\nDies sind\nzwei Zeilen."

\v

Entspricht einem vertikalen Tabstoppzeichen \u000B.

[\v]{2,}

"\v\v\v" in "\v\v\v"

\f

Entspricht einem Seitenvorschubzeichen \u000C.

[\f]{2,}

"\f\f\f" in "\f\f\f"

\n

Entspricht einer neuen Zeile \u000A.

\r\n(\w+)

"\r\nDies" in "\r\nDies sind\nzwei Zeilen."

\e

Entspricht einem Escapezeichen \u001B.

\e

"\x001B" in "\x001B"

\nnn

Verwendet die oktale Darstellung, um ein Zeichen anzugeben (nnn besteht aus bis zu drei Ziffern).

\w\040\w

"a b", "c d" in

"a bc d"

\xnn

Verwendet die hexadezimale Darstellung, um ein Zeichen anzugeben (nn besteht genau aus zwei Ziffern).

\w\x20\w

"a b", "c d" in

"a bc d"

\cX

\cx

Entspricht dem durch X oder x angegebenen ASCII-Steuerzeichen, wobei X oder x der Buchstabe des Steuerzeichens ist.

\cC

"\x0003" in "\x0003" (Strg-C)

\unnnn

Entspricht einem Unicode-Zeichen in hexadezimaler Darstellung (genau vier Stellen, dargestellt durch nnnn).

\w\u0020\w

"a b", "c d" in

"a bc d"

\

Entspricht dem angegebenen Zeichen, wenn darauf ein Zeichen folgt, das in dieser und anderen Tabellen in diesem Thema nicht als Escapezeichen erkannt wird. \* entspricht beispielsweise \x2A. Hierdurch kann das Modul für reguläre Ausdrücke Sprachelemente (z. B. * oder?) und Zeichenliterale (dargestellt durch \* oder \?) unterscheiden.

\d+[\+-x\*]\d+\d+[\+-x\*\d+

"2+2" und "3*9" in "(2+2) * 3*9"

Zurück nach oben

Zeichenklassen

Eine Zeichenklasse entspricht einer beliebigen Reihe von Zeichen. Zeichenklassen verwenden die in der folgenden Tabelle aufgeführten Sprachelemente. Weitere Informationen finden Sie unter Zeichenklassen.

Zeichenklasse

Beschreibung

Muster

Entsprechungen

[character_group]

Entspricht jedem beliebigen einzelnen Zeichen in character_group. Bei der Entsprechung wird standardmäßig die Groß- und Kleinschreibung berücksichtigt.

[ae]

"a" in "wage"

"a", "e" in "klasse"

[^character_group]

Negation: Entspricht jedem beliebigen einzelnen Zeichen, das nicht in character_group enthalten ist. Standardmäßig wird bei Zeichen in character_group die Groß-/Kleinschreibung berücksichtigt.

[^aei]

"r", "g", "n" in "ringen"

[erste-letzte]

Zeichenbereich: Entspricht jedem beliebigen einzelnen Zeichen im Bereich von first bis last.

[A-Z]

"A", "B" in "AB123"

.

Platzhalterzeichen: Entspricht jedem beliebigen einzelnen Zeichen außer \n.

a.e

"ade" in "gerade"

"ase" in "klasse"

\p{name}

Entspricht jedem beliebigen Zeichen, das sich in der allgemeinen Unicode-Kategorie oder einem von name angegebenen benannten Block befindet.

\p{Lu}

\p{IsCyrillic}

"S", "M" in "Staatliche Museen"

"Д", "Ж" in "ДЖem"

\P{name}

Entspricht jedem beliebigen Zeichen, das sich nicht in der allgemeinen Unicode-Kategorie oder einem von name angegebenen benannten Block befindet.

\P{Lu}

\P{IsCyrillic}

"a", "d", "t" in "Stadt"

"e", "m" in "ДЖem"

\w

Entspricht einem beliebigen Wortzeichen.

\w

"I", "D", "A", "1", "3" in "ID A1.3"

\W

Entspricht einem beliebigen Nichtwortzeichen.

\W

" ", "." in "ID A1.3"

\s

Entspricht einem beliebigen Leerraumzeichen.

\w\s

"D " in "ID A1.3"

\S

Entspricht einem beliebigen Nicht-Leerraumzeichen.

\s\S

" _" in "int __ctr"

\d

Entspricht einer beliebigen Dezimalziffer.

\d

"4" in "4 = IV"

\D

Entspricht einem beliebigen Zeichen, das keine Dezimalziffer ist.

\D

" ", "=", " ", "I", "V" in "4 = IV"

Zurück nach oben

Anchor

Anchor oder atomare Assertionen mit einer Breite von Null bewirken, dass, in Abhängigkeit von der Position in der Zeichenfolge, eine Entsprechung gefunden oder nicht gefunden wird. Sie bewirken jedoch nicht, dass das Modul die Zeichenfolge durchläuft oder Zeichen verwendet. Die Metazeichen in der folgenden Tabelle sind Anchor. Weitere Informationen finden Sie unter Anker in regulären Ausdrücken.

Assertion

Beschreibung

Muster

Entsprechungen

^

Der Vergleich muss am Anfang der Zeichenfolge oder Zeile beginnen.

^\d{3}

"901-" in

"901-333-"

$

Der Vergleich muss am Ende der Zeichenfolge oder vor \n am Ende der Zeile oder Zeichenfolge erfolgen.

-\d{3}$

"-333" in

"-901-333"

\A

Der Vergleich muss am Beginn der Zeichenfolge erfolgen.

\A\d{3}

"901" in

"901-333-"

\Z

Der Vergleich muss am Ende der Zeichenfolge oder vor \n am Ende der Zeichenfolge erfolgen.

-\d{3}\Z

"-333" in

"-901-333"

\z

Der Vergleich muss am Ende der Zeichenfolge erfolgen.

-\d{3}\z

"-333" in

"-901-333"

\G

Der Vergleich muss an dem Punkt erfolgen, an dem der vorherige Vergleich beendet wurde.

\G\(\d\)

"(1)", "(3)", "(5)" in "(1)(3)(5)[7](9)"

\b

Der Vergleich muss an einer Begrenzung zwischen einem \w (alphanumerischen) und einem \W (nicht alphanumerischen) Zeichen erfolgen.

\b\w+\s\w+\b

"dem dem" in "dem demnach dem dem"

\B

Der Vergleich darf nicht an einer \b-Begrenzung erfolgen.

\Bend\w*\b

"ends", "ender" in "end sendet endete sender"

Zurück nach oben

Gruppierungskonstrukte

Gruppierungskonstrukte grenzen Teilausdrücke eines regulären Ausdrucks ab und zeichnen gewöhnlich Teilzeichenfolgen einer Eingabezeichenfolge auf. Gruppierungskonstrukte verwenden die Sprachelemente in der folgenden Tabelle. Weitere Informationen finden Sie unter Gruppierungskonstrukte.

Gruppierungskonstrukt

Beschreibung

Muster

Entsprechungen

(subexpression)

Zeichnet den übereinstimmenden Teilausdruck auf und weist diesem eine nullbasierte Ordinalzahl zu.

(\w)\1

"aa" in "paarweise"

(?<Name> Teilausdruck)

Zeichnet den übereinstimmenden Teilausdruck in einer benannten Gruppe auf.

(?<double>\w)\k<double>

"aa" in "paarweise"

(?<Name1-Name2> Teilausdruck)

Definiert eine Ausgleichsgruppendefinition. Weitere Informationen finden Sie im Abschnitt "Ausgleichen von Gruppendefinitionen" in Gruppierungskonstrukte.

(((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$

"((1-3)*(3-1))" in "3+2^((1-3)*(3-1))"

(?: Teilausdruck)

Definiert eine Nicht-Erfassungsgruppe.

Write(?:Line)?

"WriteLine" in "Console.WriteLine()"

(?imnsx-imnsx: subexpression)

Aktiviert oder deaktiviert die angegebenen Optionen in subexpression. Weitere Informationen finden Sie unter Optionen für reguläre Ausdrücke.

A\d{2}(?i:\w+)\b

"A12xl", "A12XL" in "A12xl A12XL a12xl"

(?= subexpression)

Positive Lookaheadassertion mit einer Breite von Null.

\w+(?=\.)

"is", "ren" und "weg" in "Er isst. Der Hund rennt. Die Sonne ist weg."

(?! subexpression)

Negative Lookaheadassertion mit einer Breite von Null.

\b(?!un)\w+\b

"sich", "sicht" in "unsicher sicher sichtbar mischt"

(?<= subexpression)

Positive Lookbehindassertion mit einer Breite von Null.

(?<=19)\d{2}\b

"99", "50", "05" in "1851 1999 1950 1905 2003"

(?<! subexpression)

Negative Lookbehindassertion mit einer Breite von Null.

(?<!19)\d{2}\b

"51", "03" in "1851 1999 1950 1905 2003"

(?> subexpression)

Nicht zurückverfolgender ("gieriger") Teilausdruck.

[13579](?>A+B+)

"1ABB", "3ABB", and "5AB" in "1ABB 3ABBC 5AB 5AC"

Zurück nach oben

Quantifizierer

Quantifizierer geben an, wie viele Instanzen des vorherigen Elements (bei dem es sich um ein Zeichen, eine Gruppe oder eine Zeichenklasse handeln kann) in der Eingabezeichenfolge vorhanden sein müssen, damit eine Entsprechung gefunden wird. Quantifizierer verwenden die Sprachelemente in der folgenden Tabelle. Weitere Informationen finden Sie unter Quantifizierer.

Quantifizierer

Beschreibung

Muster

Entsprechungen

*

Entspricht dem vorangehenden Element nicht oder mehrmals.

\d*\. \d

".0", "19.9", "219.9"

+

Entspricht dem vorangehenden Element einmal oder mehrmals.

"be+"

"bei" in beim"", "be" in "bei"

?

Entspricht dem vorangehenden Element nicht oder einmal.

"rai? n"

"ran", "rain"

{n}

Entspricht dem vorangehenden Element genau n-mal.

",\d{3}"

",043" in "1,043.6", ",876", ",543" und ",210" in "9,876,543,210"

{n,}

Entspricht dem vorangehenden Element mindestens n-mal.

"\d{2,}"

"166", "29", "1930"

{n,m}

Entspricht dem vorangehenden Element mindestens n-, höchstens jedoch m-mal.

"\d{3,5}"

"166", "17668"

"19302" in "193024"

*?

Entspricht dem vorangehenden Element nicht oder mehrmals, jedoch so wenige Male wie möglich.

\d*? \. \d

".0", "19.9", "219.9"

+?

Entspricht dem vorangehenden Element ein- oder mehrmals, jedoch so wenige Male wie möglich.

"be+?"

"bei" in beim"", "be" in "bei"

??

Entspricht dem vorangehenden Element nicht oder einmal, jedoch so wenige Male wie möglich.

"rai?? n"

"ran", "rain"

{n}?

Entspricht dem vorangehenden Element genau n-mal.

",\d{3}?"

",043" in "1,043.6", ",876", ",543" und ",210" in "9,876,543,210"

{n,}?

Entspricht dem vorangehenden Element mindestens n-mal, jedoch so wenige Male wie möglich.

"\d{2,}?"

"166", "29", "1930"

{n,m}?

Entspricht dem vorangehenden Element zwischen n- und m-mal, jedoch so wenige Male wie möglich.

"\d{3,5}?"

"166", "17668"

"193", "024" in "193024"

Zurück nach oben

Rückverweiskonstrukte

Ein Rückverweis ermöglicht es, einen zuvor gefundenen Teilausdruck später im gleichen regulären Ausdruck zu identifizieren. In der folgenden Tabelle sind die Rückverweiskonstrukte aufgeführt, die von regulären .NET Framework-Ausdrücken unterstützt werden. Weitere Informationen finden Sie unter Rückverweiskonstrukte.

Rückverweiskonstrukt

Beschreibung

Muster

Entsprechungen

\number

Rückverweis. Entspricht dem Wert eines nummerierten Teilausdrucks.

(\w)\1

"ee" in "beseelt"

\k<name>

Benannter Rückverweis. Entspricht dem Wert eines benannten Ausdrucks.

(?<char>\w)\k<char>

"ee" in "beseelt"

Zurück nach oben

Alternierungskonstrukte

Alternierungskonstrukte ändern einen regulären Ausdruck, um entweder/oder-Vergleiche zuzulassen. Diese Konstrukte verwenden die Sprachelemente in der folgenden Tabelle. Weitere Informationen finden Sie unter Alternierungskonstrukte.

Alternierungskonstrukt

Beschreibung

Muster

Entsprechungen

|

Entspricht jedem beliebigen durch einen senkrechten Strich (|) getrennten Element.

th(e|is|at)

"the", "this" in "This is the day. "

(?(Ausdruck)ja|nein)

Entspricht ja, wenn expression übereinstimmt; entspricht andernfalls nein (optional). expression wird als Assertion mit einer Breite von Null interpretiert.

(?(A)A\d{2}\b|\b\d{3}\b)

"A10", "910" in "A10 C103 910"

(?(Name)ja|nein)

Entspricht ja, wenn für die benannte Erfassung name eine Entsprechung gefunden wird; entspricht andernfalls nein (optional).

(?<quoted>")?(?(quoted).+?"|\S+\s)

Hund.jpg, "Yiska spielt.jpg" in "Hund.jpg "Yiska spielt.jpg""

Zurück nach oben

Ersetzungen

Ersetzungen sind Sprachelemente regulärer Ausdrücke, die in Ersetzungsmustern unterstützt werden. Weitere Informationen finden Sie unter Ersetzungen. Die Metazeichen in der folgenden Tabelle sind atomare Assertionen mit einer Breite von Null.

Zeichen

Beschreibung

Muster

Ersetzungsmuster

Eingabezeichenfolge

Ergebniszeichenfolge

$number

Ersetzt die untergeordnete Zeichenfolge, die der number einer Gruppe entspricht.

\b(\w+)(\s)(\w+)\b

$3$2$1

"one two"

"two one"

${name}

Ersetzt die untergeordnete Zeichenfolge, die dem genannten name der Gruppe entspricht.

\b(?<word1>\w+)(\s)(?<word2>\w+)\b

${word2} ${word1}

"one two"

"two one"

$$

Ersetzt ein "$"-Literal.

\b(\d+)\s?USD

$$$1

"103 USD"

"$103"

$&

Ersetzt eine Kopie der gesamten Entsprechung.

(\$*(\d*(\.+\d+)?){1})

**$&

"$1.30"

"**$1.30**"

$`

Ersetzt den gesamten Text der Eingabezeichenfolge vor der Entsprechung.

B+

$`

"AABBCC"

"AAAACC"

$'

Ersetzt den gesamten Text der Eingabezeichenfolge nach der Entsprechung.

B+

$'

"AABBCC"

"AACCCC"

$+

Ersetzt die zuletzt erfasste Gruppe.

B+(C+)

$+

"AABBCCDD"

AACCDD

$_

Ersetzt die gesamte Eingabezeichenfolge.

B+

$_

"AABBCC"

"AAAABBCCCC"

Zurück nach oben

Verschiedene Konstrukte

Verschiedene Konstrukte ändern Muster von regulären Ausdrücken oder stellen Informationen darüber bereit. In der folgenden Tabelle sind die verschiedenen Konstrukte aufgeführt, die von .NET Framework unterstützt werden. Weitere Informationen finden Sie unter Verschiedene Konstrukte.

Konstrukt

Definition

Beispiel

(?imnsx-imnsx)

Aktiviert oder deaktiviert Optionen wie die Groß-/Kleinschreibung mitten in einem Muster. Weitere Informationen finden Sie unter Optionen für reguläre Ausdrücke.

\bA(?i)b\w+\b entspricht "ABA", "Able" in "ABA Able Act"

(?# comment)

Inlinekommentar. Der Kommentar endet bei der ersten schließenden Klammer.

\bA(?#Matches words starting with A)\w+\b

# [bis Zeilenende]

X‑Modus-Kommentar. Der Kommentar beginnt bei einem # ohne Escapezeichen und reicht bis zum Ende der Zeile.

(?x)\bA\w+\b#Matches words starting with A

Zurück nach oben

Siehe auch

Referenz

System.Text.RegularExpressions

Regex

Konzepte

Reguläre Ausdrücke von .NET Framework

Klassen regulärer Ausdrücke

Weitere Ressourcen

Empfohlene Vorgehensweisen für die Verwendung von regulären Ausdrücken in .NET Framework

Beispiele für reguläre Ausdrücke