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 |
---|---|
[ ] | 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 |
---|---|
[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 |
---|---|
[^ ] | Befindet sich das Zeichen ^ am Anfang innerhalb einer Zeichengruppe negiert es die darin enthaltenen Zeichen. |
Beispiele
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 |
---|---|
? | Der voranstehende Ausdruck ist optional und kann genau einmal vorkommen, muss aber nicht vorkommen. |
* | Der voranstehende Ausdruck ist optional und kann beliebig oft vorkommen, muss aber nicht vorkommen. |
+ | Der voranstehende Ausdruck muss mindestens einmal vorkommen, darf aber auch beliebig oft vorkommen. |
{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 |
---|---|
[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 |
---|---|
\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 |
---|---|
\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 |
---|---|
[\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“):
|
Patternbeginn und -Ende
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 |
---|---|
\<Gruppenindes> | 1-basierter Index der Gruppe |
Beispiele
Pattern | Text, in dem das Pattern gefunden wird |
---|---|
^(136[0-3])[A-Z]\1$ | 1360A1360, 1361A1361, 1362A1362, 1363A1363, |
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 |
---|---|
| | “Oder”-Zeichen zur Darstellung von Alternativen |
Beispiele
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