Syntax von regulären Ausdrücken

Ein regulärer Ausdruck kann im einfachsten Fall nur aus einem Wort bestehen ( z.B. “Rechnung“) oder ein sehr komplexes Muster enthalten (z.B. zur Erkennung einer IBAN: “[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}“). Ein paar Beispiele für die gängigsten regulären Ausdrücke finden Sie unter Beispiele für reguläre Ausdrücke .

Bei der nachfolgenden Beschreibung der Syntax für reguläre Ausdrücke wird der reguläre Ausdruck kurz als “Pattern” bezeichnet.

Zeichengruppen

Zeichen

Beschreibung

Zeichen

Beschreibung

[ ]

Zeichengruppen werden innerhalb von eckigen Klammern angegeben. Im Pattern werden dann alle Zeichen berücksichtigt, welche innerhalb der Zeichengruppe angegeben wurden, unabhängig von deren Reichenfolge. Innerhalb der Zeichengruppe können Zeichenbereiche bzw. einzelne Zeichen verwendet werden.

Innerhalb der Zeichengruppe hat das Zeichen “-“ (Bindestrich) eine besondere Bedeutung und definiert einen Bereich. Soll der Bindestrich selbst als Zeichen innerhalb der Zeichengruppe verwendet werden, muss dieser “escaped” werden (also mit einem führenden Backslash versehen werden): “\-”

 

Beispiele

Pattern

Bedeutung

Pattern

Bedeutung

[0-9]

Diese Zeichengruppe definiert eine Ziffer von 0 bis einschließlich 9.

[A-Z]

Nur Großbuchstaben

[a-z]

Nur Kleinbuchstaben

[0-9a-zA-Z]

Nur Ziffern, Klein- und Großbuchstaben

[0-9\-]

Nur Ziffern und Bindestriche

[a-zA-ZäöüßÄÖÜ]

Alle Klein- und Großbuchstaben inkl. Umlaute

[1-37-9]

Nur die Ziffern 1,2,3, 7,8,9

 

Negation von Zeichengruppen

Zeichen

Beschreibung

Zeichen

Beschreibung

[^ ]

Befindet sich das Zeichen ^ am Anfang innerhalb einer Zeichengruppe negiert es die darin enthaltenen Zeichen.

 

Beispiele

Pattern

Bedeutung

Pattern

Bedeutung

[^a-z]

Alle Zeichen außer Kleinbuchstaben

[^0-9]

Alle Zeichen außer Ziffern

 

Quantoren

Wird im Pattern z.B. eine Zeichengruppe “[0-9]“ angegeben, dann wird nach genau einer einzelnen Ziffer gesucht. Soll nach zwei Ziffern gesucht werden, könnte man das Pattern “[0-9][0-9]“ angeben. Um jedoch nach einer Zeichenfolge bestehend aus mehreren/vielen Ziffern zu suchen, müssen sogenannte Quantoren angegeben werden. Damit lassen sich eine bestimmte bzw. beliebige Anzahl der angegebenen Zeichen(-gruppen) definieren. Der Quantor wird immer direkt nach dem Zeichen bzw. der Zeichengruppe (in der Tabelle als Ausdruck bezeichnet) angegeben.

Zeichen

Beschreibung

Zeichen

Beschreibung

?

Der voranstehende Ausdruck ist optional und kann genau einmal vorkommen, muss aber nicht vorkommen.
Dieser Quantor könnte auch mit dem Quantor “{0,1}“ ersetzt werden.

*

Der voranstehende Ausdruck ist optional und kann beliebig oft vorkommen, muss aber nicht vorkommen.
Dieser Quantor könnte auch mit dem Quantor “{0,}“ ersetzt werden.

+

Der voranstehende Ausdruck muss mindestens einmal vorkommen, darf aber auch beliebig oft vorkommen.
Dieser Quantor könnte auch mit dem Quantor “{1,}“ ersetzt werden.

{n}

Der Ausdruck muss exakt n-mal vorkommen.

{min,}

Der Ausdruck muss mindestens min-mal vorkommen.

{min,max}

Der Ausdruck muss mindestens min-mal vorkommen, darf aber maximal max-mal vorkommen

 

Beispiele

Pattern

Bedeutung

Pattern

Bedeutung

[A-Z]?

Es muss genau ein Großbuchstabe vorkommen

[A-Z]{2}[0-9]*

Nach exakt 2 Grußbuchstaben können beliebig viele Ziffern folgen, es können aber auch nur die 2 Großbuchstaben ohne Ziffern sein.

[A-Z]{2}[0-9]+

Nach exakt 2 Grußbuchstaben muss mindestens eine oder mehrere Ziffern folgen.

RE-[0-9]{5}

Der gesuchte Text (z.B. eine Rechnungsnummer) besteht aus dem Kürzel “RE-” und einer nachfolgenden 5-stelligen Nummer.

RE-[0-9]{5,}

Der gesuchte Text (z.B. eine Rechnungsnummer) besteht aus dem Kürzel “RE-” und einer nachfolgenden Nummer, welche mindestens 5-stellig ist.

RE-[0-9]{5,7}

Der gesuchte Text (z.B. eine Rechnungsnummer) besteht aus dem Kürzel “RE-” und einer nachfolgenden Nummer, welche mindestens 5-stellig jedoch maximal 7-stellig ist.

 

Vordefinierte Zeichenklassen

Für die gängisten Zeichengruppen gibt es vordefinierte Zeichenklassen, mit denen ein komplexer regulärer Ausdruck etwas vereinfachter dargestellt werden kann.

Zeichen

Beschreibung

Zeichen

Beschreibung

\d

Eine Ziffer (entspricht [0-9)

\D

Ein Zeichen, welches keine Ziffer ist (entspricht [^0-9])

\w

Ein Buchstabe (inkl. Umlaute), eine Ziffer oder der Unterstrich (entspricht [a-zäöüßA-ZÄÖÜ_0-9])

\W

Ein Zeichen, welches weder ein Buchstabe noch eine Ziffer oder ein Unterstrich ist (entspricht [^\w])

\s

Ein Whitespace (Leerraum, z.B. ein Leerzeichen oder die Steuerzeichen \n, \r, \t)

\S

Ein Zeichen, das kein Whitespace ist (entspricht [^\s]

.

Ein Punkt definiert ein beliebiges Zeichen (z.B. Buchstabe, Ziffer, Whitespace)

 

Beispiele

Pattern

Text, in dem das Pattern gefunden wird

Pattern

Text, in dem das Pattern gefunden wird

\d{5}

Eine Zeichenfolge, welche aus 5 Ziffern besteht (z.B. Postleitzahl)

\d{5}\s+\w+

Eine Zeichenfolge, welche aus 5 Ziffern, einem nachfolgenden Leerzeichen und einer beliebigen Zeichenfolge besteht (z.B. Postleitzahl + Ort)

[A-Z]{2}-\d{1,6}

Eine Zeichenfolge, welche aus 2 Großbuchstaben, einem nachfolgenden Bindestrich und einer maximal 6-stelligen Nummern besteht (z.B. “RE-12345”)

 

Zeichen mit Metabedeutung

Einige Zeichen haben eine besondere Bedeutung und sind u.a. für die Beschreibung des regulären Ausdrucks erforderlich. Um diese Zeichen als solche z.B. in einer Zeichengruppe zu verwenden, müssen diese “escaped” werden (also einen Backslash vor das Zeichen setzen), um die Metabedeutung aufzuheben.

Zeichen mit Metabedeutung: \ ( ) [ ] { } | * ? + ^ $ # .

 

Beispiele

Pattern

Bedeutung

Pattern

Bedeutung

[\d\+,\.]*

Eine Zeichenfolge, welche aus Ziffern, Komma, Punkt und/oder +-Zeichen besteht (z.B. “1.000,00+5”)

\+\d{2}\s?\(\d+\)\s?[\d\-]+

Eine Zeichenfolge, welche aus folgenden Elementen besteht (z.B. eine Telefonnummer im Format “+49 (8031) 12345-67“):

  • Einem führendes +-Zeichen

  • Zwei nachfolgende Ziffern (Ländervorwahl)

  • Ein optionales Leerzeichen

  • Eine Klammer auf

  • Eine oder mehrere Ziffern (Ortsvorwahl)

  • Eine Klammer zu

  • Ein optionales Leerzeichen

  • Eine beliebig lange Zeichenfolge bestehend aus Ziffern und Bindestrichen

 

Patternbeginn und -Ende

Zeichen

Beschreibung

Zeichen

Beschreibung

^

Beginnt das Pattern mit ^ (erstes Zeichen des Patterns), dann bedeutet dies, dass der zu durchsuchende Text ab dem ersten Zeichen dem Pattern entsprechen muss.

$

Endet das Pattern mit $ (letztes Zeichen des Patterns), dann bedeutet dies, dass der zu durchsuchende Text mit dem Pattern enden muss.

 

Beispiele

Es sollen folgende Texte durchsucht werden: Baum, BaumStamm, StammBaum

Pattern

Text, in dem das Pattern gefunden wird

Baum

Baum, BaumStamm, StammBaum

^Baum

Baum, BaumStamm

Baum$

Baum, StammBaum

^Baum$

Baum

 

Gruppierung

Mit runden Klammern können Teile des regulären Ausdrucks gruppiert werden. Auf diese Gruppen kann über einen Index innerhalb des regulären Ausdrucks zugegriffen und Quantoren angewendet werden. Damit können z.B. mehrfach vorkommende Strings innerhalb eines Textes adressiert werden.

Zeichen

Beschreibung

Zeichen

Beschreibung

\<Gruppenindes>

1-basierter Index der Gruppe

 

Beispiele

Pattern

Text, in dem das Pattern gefunden wird

Pattern

Text, in dem das Pattern gefunden wird

^(136[0-3])[A-Z]\1$

1360A1360, 1361A1361, 1362A1362, 1363A1363,
1360B1360, 1361B1361, 1362B1362, 1363B1363,
1360B1360, 1361C1361, 1362C1362, 1363C1363,

1360Z1360, 1361Z1361, 1362Z1362, 1363Z1363

 

Alternativen

In einem regulären Ausdruck können auch alternative Ausdrücke angegeben werden. Hierzu werden die Ausdrücke mit dem “Oder”-Zeichen (“|”) getrennt. Alternativen können auch verschachtelt werden, so dass auch innerhalb von den Alternativen weitere Alternativen genutzt werden können.

Zeichen

Beschreibung

Zeichen

Beschreibung

|

“Oder”-Zeichen zur Darstellung von Alternativen

 

Beispiele

Pattern

Text, in dem das Pattern gefunden wird

Pattern

Text, in dem das Pattern gefunden wird

(abc|1234|xyz)

Sucht nach den Strings “abc” oder “1234” oder “xyz“

(Airbus (A350|A380)|Boeing (747|787))

Sucht nach den Strings “Airbus A350” oder “Airbus A380“ oder “Boing747” oder “Boing 787”

 

 

Verwandte Themen