Document toolboxDocument toolbox

Kurzübersicht über 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. 

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:

Die unten aufgeführten Informationen sind ein Auszug aus der Dokumentation welche von Microsoft bereitgestellt wurde. Das Original kann hier eingesehen werden.

Escapezeichen

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

Escapezeichen

Beschreibung

Muster

Übereinstimmung

Escapezeichen

Beschreibung

Muster

Übereinstimmung

\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 zwei oder drei Ziffern).

\w\040\w

"a b", "c d" in

"a bc d"

\x nn

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

\w\x20\w

"a b", "c d" in

"a bc d"

\c X

\c x

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

\cC

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

\u nnnn

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. Beispielsweise ist \* identisch mit \x2Aund \.entspricht \x2E. Hierdurch kann die Engine für reguläre Ausdrücke Sprachelemente (z.B. * oder ?) und Zeichenliterale (dargestellt durch \*oder \?) unterscheiden.

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

„2+2“ und „3*9“ in „(2+2) * 3*9“

Zeichenklassen

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

Zeichenklasse

Beschreibung

Muster

Übereinstimmung

Zeichenklasse

Beschreibung

Muster

Übereinstimmung

[character_group]

Entspricht einem 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 beachtet.

[^aei]

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

[ first -last ]

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.

Damit es einem Punkt als Literalzeichen entspricht ("." oder oder \u002E, muss ihm ein Escapezeichen (\.) vorangestellt werden.

a.e

"ade" in "gerade"

"ase" in "klasse"

\p{ Name }

Entspricht jedem beliebigen Zeichen, das sich in der allgemeinen Unicode-Kategorie oder einem von nameangegebenen 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 nameangegebenen 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"

Anker

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 die Engine die Zeichenfolge durchläuft oder Zeichen verwendet. Die Metazeichen in der folgenden Tabelle sind Anchor. 

Assertion

Beschreibung

Muster

Übereinstimmung

Assertion

Beschreibung

Muster

Übereinstimmung

^

Die Übereinstimmung muss standardmäßig zu Anfang der Zeichenfolge beginnen. Im Mehrzeilenmodus muss sie am Anfang der Zeile beginnen.

^\d{3}

"901" in

"901-333-"

$

Die Übereinstimmung muss standardmäßig am Ende der Zeichenfolge oder vor \n am Ende der Zeichenfolge stattfinden. Im Mehrzeilenmodus muss sie am Ende der Zeile oder vor \n am Ende der Zeile 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 demnach", "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"

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.

Gruppierungskonstrukt

Beschreibung

Muster

Übereinstimmung

Gruppierungskonstrukt

Beschreibung

Muster

Übereinstimmung

( Teilausdruck )

Zeichnet den übereinstimmenden Teilausdruck auf und weist diesem eine einsbasierte 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. 

(((?'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()"

"Write" in "Console.Write(value)"

(?imnsx-imnsx:Teilausdruck )

Aktiviert oder deaktiviert die angegebenen Optionen in subexpression

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

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

(?= Teilausdruck )

Positive Lookaheadassertion mit einer Breite von Null.

\w+(?=\.)

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

(?! Teilausdruck )

Negative Lookaheadassertion mit einer Breite von Null.

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

"sicher", "mischt" in "unsicher sicher unter mischt"

(?<= Teilausdruck )

Positive Lookbehindassertion mit einer Breite von Null.

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

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

(?<! Teilausdruck )

Negative Lookbehindassertion mit einer Breite von Null.

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

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

(?> Teilausdruck )

Nicht zurückverfolgender ("gieriger") Teilausdruck.

[13579](?>A+B+)

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

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. 

Quantifizierer

Beschreibung

Muster

Übereinstimmung

Quantifizierer

Beschreibung

Muster

Übereinstimmung

  •  

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+?"

"be" 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"

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 unterstützt werden.

Rückverweiskonstrukt

Beschreibung

Muster

Übereinstimmung

Rückverweiskonstrukt

Beschreibung

Muster

Übereinstimmung

\ 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"

Alternierungskonstrukte

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

Alternierungskonstrukt

Beschreibung

Muster

Übereinstimmung

Alternierungskonstrukt

Beschreibung

Muster

Übereinstimmung

|

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

th(e|is|at)

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

(?( expression )yes | no )

Entspricht yes , wenn das von expression angegebene Muster für reguläre Ausdrücke übereinstimmt. Andernfalls entspricht es dem optionalen no .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 ) yes | no )

Entspricht yes , wenn name, eine benannte oder nummerierte Erfassungsgruppe, eine Übereinstimmung aufweist. Andernfalls entspricht es dem optionalen no.

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

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

Ersetzungen

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

Zeichen

Beschreibung

Muster

Ersetzungsmuster

Eingabezeichenfolge

Ergebniszeichenfolge

Zeichen

Beschreibung

Muster

Ersetzungsmuster

Eingabezeichenfolge

Ergebniszeichenfolge

$number

Ersetzt die untergeordnete Zeichenfolge, die der numbereiner Gruppe entspricht.

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

$3$2$1

"one two"

"two one"

${Name }

Ersetzt die untergeordnete Zeichenfolge, die dem genannten nameder 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.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"

Optionen für reguläre Ausdrücke

Sie können Optionen angeben, die steuern, wie die Engine für reguläre Ausdrücke ein Muster des regulären Ausdrucks interpretiert.Viele dieser Optionen können entweder inline (im Muster des regulären Ausdrucks) oder als eine oder mehrere RegexOptions-Konstanten angegeben werden. Diese Kurzübersicht enthält nur Inlineoptionen. 

Sie können eine Inlineoption auf zwei Arten angeben:

  • Mit dem Konstrukt (?imnsx-imnsx), wobei ein vor einer Option oder Optionsgruppe stehendes Minuszeichen (-) die betreffenden Optionen deaktiviert. Zum Beispiel aktiviert (?i-mn) Übereinstimmungen ohne Berücksichtigung der Groß-/Kleinschreibung (i), deaktiviert Mehrzeilenmodus (m) und deaktiviert unbenannte Gruppenerfassungen (n). Die Option gilt für das Muster des regulären Ausdrucks ab dem Punkt, an dem die Option definiert ist, und ist entweder bis zum Ende des Musters oder bis zu dem Punkt gültig, an dem ein anderes Konstrukt die Option umkehrt.

  • Mit Gruppierungskonstrukte in regulären Ausdrücken(?imnsx-imnsx:Teilausdruck), das die Optionen nur für die angegebene Gruppe definiert.

Folgende Inlineoptionen werden unterstützt-

Option

Beschreibung

Muster

Übereinstimmung

Option

Beschreibung

Muster

Übereinstimmung

i

Groß-/Kleinschreibung bei der Suche ignorieren

\b(?i)a(?-i)a\w+\b

"Aale" und "Aasblumen" in "Aale essen Aasblumen roh"

m

Mehrzeilenmodus verwenden. ^ und $entsprechen dem Anfang und Ende einer Zeile anstatt dem Anfang und Ende einer Zeichenfolge.





s

Einzeilenmodus verwenden





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 unterstützt werden.

Konstrukt

Definition

Beispiel

Konstrukt

Definition

Beispiel

(?imnsx-imnsx)

Aktiviert oder deaktiviert Optionen wie die Groß-/Kleinschreibung mitten in einem Muster. 

\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