mirror of
https://github.com/ziishaned/learn-regex.git
synced 2025-08-23 11:56:10 -04:00
Merge pull request #1 from JohnnyJayJay/master
Revise and finish German translation
This commit is contained in:
commit
c79146b178
@ -22,58 +22,57 @@
|
|||||||
* [Русский](../translations/README-ru.md)
|
* [Русский](../translations/README-ru.md)
|
||||||
* [Tiếng Việt](../translations/README-vn.md)
|
* [Tiếng Việt](../translations/README-vn.md)
|
||||||
|
|
||||||
## Was sind reguläre Ausdrücke
|
## Was sind Reguläre Ausdrücke?
|
||||||
|
|
||||||
> Ein regulärer Ausdruck ist eine Gruppe von Buchstaben und Symbolen, die benutzt werden um ein spezifisches Muster in einem Text zu finden
|
> Ein regulärer Ausdruck ist eine Gruppe von Buchstaben und Symbolen, die benutzt werden um ein bestimmtes Muster in einem Text zu finden.
|
||||||
Ein regulärer Ausdruch ist ein Muster, das mit einem zu durchsuchenden Text von links nach rechts abgeglichen wird. Die Bezeichnung
|
Ein regulärer Ausdruch ist ein Muster, das mit einem zu durchsuchenden Text von links nach rechts abgeglichen wird. Die Bezeichnung
|
||||||
"Regulärer Ausdruck" ist in der Praxis unüblich und stattdessen wird häufig die Englische Abkürzung "Regex" verwendet. Reguläre
|
"Regulärer Ausdruck" ist in der Praxis unüblich und stattdessen wird häufig die Englische Abkürzung "Regex" oder "RegExp" (*regular expression*) verwendet. Reguläre
|
||||||
Ausdrücke werden verwendet um Fragemente eines Textes zu ersetzen, Formulare zu validieren, Segmente eines Textes anhand eines
|
Ausdrücke werden verwendet, um Fragemente eines Textes zu ersetzen, Formulare zu validieren, Segmente eines Textes anhand eines
|
||||||
Musters zu extrahieren und für vieles mehr.
|
Musters zu extrahieren und für vieles mehr.
|
||||||
|
|
||||||
Angenommen Du schreibst eine Applikation und möchtest die Regeln definieren, nach denen ein Benutzer seinen Benutzernamen auswählen
|
Angenommen, Du schreibst eine Anwendung und möchtest die Regeln definieren, nach denen ein Benutzer seinen Benutzernamen auswählen
|
||||||
kann. Wir möchten festlegen, dass der Benutzernamen Buchstaben, Ziffern, Unter- und Bindestriche beinhalten darf. Außerdem wollen
|
kann. Wir möchten festlegen, dass der Benutzernamen Buchstaben, Ziffern, Unter- und Bindestriche beinhalten darf. Außerdem wollen
|
||||||
wir die Anzahl der Zeichen limitieren, damit der Name nicht unlesbar wird. Dazu verwenden wir den folgenden regulären Ausdruck um
|
wir die Anzahl der Zeichen limitieren, damit der Name nicht unlesbar wird. Dazu verwenden wir den folgenden regulären Ausdruck:
|
||||||
den Benutzernamen zu überprüfen:
|
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="../img/regexp-en.png" alt="Regular expression">
|
<img src="../img/regexp-en.png" alt="Regular expression">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
Der abgebildete reguläre Ausdruck erlaubt bspw. folgende Eingaben `john_doe`, `jo-hn_doe` und `john12_as`. Der Eingabe `Jo` wird nicht akzeptiert, da sie einen Großbuchstaben enthält und zu kurz ist.
|
Der abgebildete reguläre Ausdruck erlaubt bspw. die Eingaben `john_doe`, `jo-hn_doe` und `john12_as`. Der Eingabe `Jo` wird nicht akzeptiert, da sie einen Großbuchstaben enthält und zu kurz ist.
|
||||||
|
|
||||||
## Table of Contents
|
## Inhaltsverzeichnis
|
||||||
|
|
||||||
- [Basis Vergleiche](#1-basis-vergleiche)
|
- [Einfache Muster](#1-einfache-muster)
|
||||||
- [Sonderzeichen](#2-sonderzeichen)
|
- [Metazeichen](#2-metazeichen)
|
||||||
- [Punkt](#21-punkt)
|
- [Punkt](#21-punkt)
|
||||||
- [Zeichensätze](#22-zeichensätze)
|
- [Zeichenklasse](#22-zeichenklasse)
|
||||||
- [Invertierter Zeichensatz](#221-invertierter-zeichensatz)
|
- [Negierte Zeichenklasse](#221-negierte-zeichenklasse)
|
||||||
- [Wiederholungen](#23-wiederholungen)
|
- [Wiederholungen](#23-wiederholungen)
|
||||||
- [Stern *](#231-stern)
|
- [Stern *](#231-stern)
|
||||||
- [Plus +](#232-plus)
|
- [Plus +](#232-plus)
|
||||||
- [Fragezeichen ?](#233-fragezeichen)
|
- [Fragezeichen ?](#233-fragezeichen)
|
||||||
- [Klammern {}](#24-klammern)
|
- [Geschweifte Klammern {}](#24-geschweifte-klammern)
|
||||||
- [Zeichengruppen](#25-zeichengruppen)
|
- [Gruppierung ()](#25-gruppierung)
|
||||||
- [Alternation |](#26-alternation)
|
- [Alternation |](#26-alternation)
|
||||||
- [Auswertung von Sonderzeichen](#27-auswertung-von-sonderzeichen)
|
- [Escaping \](#27-escaping)
|
||||||
- [Anker](#28-anker)
|
- [Anker](#28-anker)
|
||||||
- [Caret ^](#281-caret)
|
- [Zirkumflex ^](#281-zirkumflex)
|
||||||
- [Dollar $](#282-dollar)
|
- [Dollar $](#282-dollar)
|
||||||
- [Kurzschreibweisen](#3-kurzschreibweisen)
|
- [Vordefinierte Zeichenklassen](#3-vordefinierte-zeichenklassen)
|
||||||
- [Umschauen](#4-umschauen)
|
- [Lookaround](#4-lookaround)
|
||||||
- [Positives Vorrausschauen](#41-positives-vorausschauen)
|
- [Positiver Lookahead](#41-positiver-lookahead)
|
||||||
- [Negatives Vorrausschauen](#42-negatives-vorausschauen)
|
- [Negativer Lookahead](#42-negativer-lookahead)
|
||||||
- [Positives Zurückschauen](#43-positives-zurückschauen)
|
- [Positiver Lookbehind](#43-positiver-lookbehind)
|
||||||
- [Negatives Zurückschauen](#44-negatives-zurückschauen)
|
- [Negativer Lookbehind](#44-negativer-lookbehind)
|
||||||
- [Steuerparameter](#5-steuerparameter)
|
- [Modifikatoren](#5-modifikatoren)
|
||||||
- [Groß-/Kleinschreibung](#51-groß-kleinschreibung)
|
- [Schreibungsunabhängig i](#51-schreibungsunbhängig)
|
||||||
- [Globale Suche](#52-globale-suche)
|
- [Globale Suche](#52-globale-suche)
|
||||||
- [Mehrzeilig](#53-mehrzeilig)
|
- [Mehrzeilig](#53-mehrzeilig)
|
||||||
- [Gierige oder faule Übereinstimmung](#6-gierige-oder-faule-übereinstimmung)
|
- [Gierige vs Faule Übereinstimmung](#6-gierige-vs-faule-übereinstimmung)
|
||||||
|
|
||||||
## 1. Basis Vergleiche
|
## 1. Einfache Muster
|
||||||
|
|
||||||
Ein regulärer Ausdruck ist ein einfaches Muster von Zeichen, welches für eine Suche in Text genutzt wird. Zum Beispiel, der reguläre Ausdruck `the` meint: der Buchstabe `t`, gefolgt durch den Buchstaben `h`, gefolgt durch den Buchstaben `e`.
|
Ein regulärer Ausdruck ist einfach nur ein Muster von Zeichen, welches für eine Suche in Text genutzt wird. Der reguläre Ausdruck `the` heißt zum Beispiel: der Buchstabe `t`, gefolgt von dem Buchstaben `h`, gefolgt von dem Buchstaben `e`.
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"the" => The fat cat sat on <a href="#learn-regex"><strong>the</strong></a> mat.
|
"the" => The fat cat sat on <a href="#learn-regex"><strong>the</strong></a> mat.
|
||||||
@ -81,7 +80,8 @@ Ein regulärer Ausdruck ist ein einfaches Muster von Zeichen, welches für eine
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/dmRygT/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/dmRygT/1)
|
||||||
|
|
||||||
Der reguläre Ausdruck `123` entspricht der Zeichenkette `123`. Dieser reguläre Ausdruck kann mit einer Zeichenkette verglichen werden, in dem jedes Zeichen in dem regulären Ausdruck nacheinander verglichen wird. Reguläre Ausdrücke sind normalerweise case sensitiv, Beachtung von Groß-/Kleinschreibung, so dass der Ausdruck `The` nicht mit der Zeichenkette `the` überein stimmen würde.
|
Der reguläre Ausdruck `123` entspricht der Zeichenkette `123`. Auf Übereinstimmung mit einer Zeichenkette wird er überprüft, indem jedes Zeichen in dem regulären Ausdruck nacheinander mit jedem Zeichen der Zeichenkette verglichen wird.
|
||||||
|
Reguläre Ausdrücke berücksichtigen normalerweise Groß- und Kleinschreibung, sodass etwa der Ausdruck `The` nicht mit der Zeichenkette `the` übereinstimmen würde.
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"The" => <a href="#learn-regex"><strong>The</strong></a> fat cat sat on the mat.
|
"The" => <a href="#learn-regex"><strong>The</strong></a> fat cat sat on the mat.
|
||||||
@ -89,45 +89,46 @@ Der reguläre Ausdruck `123` entspricht der Zeichenkette `123`. Dieser reguläre
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/1paXsy/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/1paXsy/1)
|
||||||
|
|
||||||
## 2. Sonderzeichen
|
## 2. Metazeichen
|
||||||
|
|
||||||
Sonderzeichen sind Bausteine von regulären Ausdrücken. Sonderzeichen stehen nicht für sich selbst, sondern werden in speziellen Fällen interpretiert. Einige Sonderzeichen haben eine besondere Bedeutung und sind innerhalb eckiger Klammern `[]`. Folgende Sonderzeichen sind möglich:
|
Metazeichen sind Bausteine von regulären Ausdrücken. Sie stehen nicht für sich selbst, sondern haben eine besondere Bedeutung und werden in spezieller Weise interpretiert.
|
||||||
|
Einige Metazeichen erhalten eine andere Bedeutung oder überhaupt erst eine besondere Bedeutung innerhalb eckiger Klammern `[]`. Folgende Metazeichen gibt es:
|
||||||
|
|
||||||
|Sonderzeichen|Beschreibung|
|
|Metazeichen|Beschreibung|
|
||||||
|:----:|----|
|
|:----:|----|
|
||||||
|.|Der Punkt entspricht jedem einzelnen Zeichen, außer einem Zeilenumbruch.|
|
|.|Der Punkt entspricht jedem einzelnen Zeichen, außer Zeilenumbrüchen.|
|
||||||
|[ ]|Zeichen-Klasse, entspricht jedem Zeichen innerhalb der eckigen Klammern.|
|
|[ ]|Zeichenklasse, entspricht jedem Zeichen innerhalb der eckigen Klammern.|
|
||||||
|[^ ]|Negierte Zeichen-Klasse, entspricht jedem Zeichen welches nicht innerhalb der eckigen Klammern definiert ist.|
|
|[^ ]|Negierte Zeichenklasse, entspricht jedem Zeichen welches nicht innerhalb der eckigen Klammern definiert ist.|
|
||||||
|*|Entspricht 0 oder mehr Wiederholungen der voran gestellten Zeichen.|
|
|*|Entspricht 0 oder mehr Wiederholungen des vorhergehenden Teilausdrucks.|
|
||||||
|+|Entspricht 1 oder mehr Wiederholungen der voran gestellten Zeichen.|
|
|+|Entspricht 1 oder mehr Wiederholungen des vorhergehenden Teilausdrucks.|
|
||||||
|?|Macht das vorhergehende Zeichen optional.|
|
|?|Macht den vorhergehenden Teilausdruck optional.|
|
||||||
|{n,m}|Klammern, entspricht mindestens "n", aber nicht mehr als "m" Wiederholungen des Zeichens.|
|
|{n,m}|Entspricht mindestens "n", aber nicht mehr als "m" Wiederholungen des vorhergehenden Teilausdrucks.|
|
||||||
|(xyz)|Zeichengruppe, entspricht den Zeichen xyz in der exakten Reihenfolge.|
|
|(xyz)|Gruppierung, entspricht den Zeichen xyz in der exakten Reihenfolge.|
|
||||||
|||Alternation, entspricht entweder den Zeichen vor oder nach dem Sonderzeichen \|.|
|
|||Alternation, entspricht entweder dem Teilausdruck vor oder nach dem \|.|
|
||||||
|\|Entfernt das nachfolgende Zeichen. Dies ermöglicht es Zeichen zu blockieren <code>[ ] ( ) { } . * + ? ^ $ \ |</code>|
|
|\|Escaped das nachfolgende Zeichen. Dies ermöglicht es Zeichen zu blockieren <code>[ ] ( ) { } . * + ? ^ $ \ |</code>|
|
||||||
|^|Überprüft den Anfang einer Eingabe.|
|
|^|Entspricht dem Anfang der Eingabe.|
|
||||||
|$|Überprüft das Ende einer Eingabe.|
|
|$|Entspricht dem Ende der Eingabe.|
|
||||||
|
|
||||||
## 2.1 Punkt
|
## 2.1 Punkt
|
||||||
|
|
||||||
Der Punkt `.` ist die einfachste Möglichkeit von Sonderzeichen. Das Sonderzeichen `.`
|
Der Punkt `.` ist das einfachste Beispiel für ein Metazeichen. Er steht für jedes beliebiges Zeichen mit der Ausnahme von Zeilenumbrüchen/Enter-Zeichen.
|
||||||
entspricht jedem einzelnen Zeichen. Es wird kein Zeilenumbruch oder Enter-Zeichen gefunden. Als Beispiel, der reguläre Ausdruck `.ar` bedeutet: ein beliebiges Zeichen, gefolgt von dem Buchstaben `a`, gefolgt vom Buchstaben `r`.
|
Als Beispiel, der reguläre Ausdruck `.ar` bedeutet: ein beliebiges Zeichen, gefolgt von dem Buchstaben `a`, gefolgt vom Buchstaben `r`.
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
".ar" => The <a href="#learn-regex"><strong>car</strong></a> <a href="#learn-regex"><strong>par</strong></a>ked in the <a href="#learn-regex"><strong>gar</strong></a>age.
|
".ar" => The <a href="#learn-regex"><strong>car</strong></a> <a href="#learn-regex"><strong>par</strong></a>ked in the <a href="#learn-regex"><strong>gar</strong></a>age.
|
||||||
</pre>
|
</pre>
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/xc9GkU/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/xc9GkU/1)
|
||||||
|
|
||||||
## 2.2 Zeichensätze
|
## 2.2 Zeichenklasse
|
||||||
|
|
||||||
Zeichensätze werden auch als Zeichenklasse bezeichnet. Zeichensätze werden in eckige Klammern angegeben. Um den Bereich der Zeichen anzugeben ist ein Bindestrich zu verwenden. Die Reihenfolge des Bereiches in den eckigen Klammern spielt keine Rolle. Zum Beispiel bedeutet der reguläre Ausdruck `[Tt]he`: ein groß geschriebenes `T` oder ein kleingeschriebenes `t`, gefolgt vom Buchstaben `h` und weiter gefolgt vom Buchstaben `e`.
|
Zeichenklassen werden auch als Zeichenmengen oder -sätze bezeichnet (eng. *character set/class*). Sie werden in eckige Klammern definiert. Um eine Zeichenfolge wie `A-Z` oder `0-9` zu definieren, kann ein Bindestrich `-` verwendet werden. Die Reihenfolge sonstiger Zeichen innerhalb der eckigen Klammern spielt keine Rolle. Zum Beispiel bedeutet der reguläre Ausdruck `[Tt]he`: ein groß geschriebenes `T` oder ein kleingeschriebenes `t`, gefolgt vom Buchstaben `h` und weiter gefolgt vom Buchstaben `e`.
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"[Tt]he" => <a href="#learn-regex"><strong>The</strong></a> car parked in <a href="#learn-regex"><strong>the</strong></a> garage.
|
"[Tt]he" => <a href="#learn-regex"><strong>The</strong></a> car parked in <a href="#learn-regex"><strong>the</strong></a> garage.
|
||||||
</pre>
|
</pre>
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/2ITLQ4/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/2ITLQ4/1)
|
||||||
|
|
||||||
Ein Punkt in einem Zeichensatz bedeutet jedoch einen wörtlichen Punkt. Der reguläre Ausdruck `ar[.]` bedeutet: ein kleingeschriebenes Zeichen `a`, gefolgt vom kleingeschriebenen Buchstaben `r`, gefolgt von dem wörtlichen Zeichen Punkt `.`.
|
Ein Punkt in einer Zeichenklasse bedeutet, anders als sonst, einen wörtlichen Punkt. Der reguläre Ausdruck `ar[.]` bedeutet: ein kleingeschriebenes Zeichen `a`, gefolgt vom kleingeschriebenen Buchstaben `r`, gefolgt von einem Punkt-Zeichen `.`.
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"ar[.]" => A garage is a good place to park a c<a href="#learn-regex"><strong>ar.</strong></a>
|
"ar[.]" => A garage is a good place to park a c<a href="#learn-regex"><strong>ar.</strong></a>
|
||||||
@ -135,9 +136,9 @@ Ein Punkt in einem Zeichensatz bedeutet jedoch einen wörtlichen Punkt. Der regu
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/wL3xtE/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/wL3xtE/1)
|
||||||
|
|
||||||
### 2.2.1 Invertierter Zeichensatz
|
### 2.2.1 Negierte Zeichenklasse
|
||||||
|
|
||||||
Im Allgemeinen stellt das Caret-Symbol `^` den Anfang einer Zeichenkette dar. Wenn es aber nach der öffnenden eckigen Klammer gesetzt wird, dann wird der Zeichensatz negiert. Als Beispiel, der reguläre Ausdruck `[^c]ar` bedeutet: jeder Buchstabe außer `c`, gefolgt vom Buchstaben `a`, gefolgt vom Buchstaben `r`.
|
Im Allgemeinen stellt das Zirkumflex `^` den Anfang einer Zeichenkette dar. Wenn es aber nach der öffnenden eckigen Klammer gesetzt wird, dann wird die Zeichenklasse negiert (eng. *negated character set*). Als Beispiel, der reguläre Ausdruck `[^c]ar` bedeutet: ein beliebiges Zeichen außer `c`, gefolgt vom Buchstaben `a`, gefolgt vom Buchstaben `r`.
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"[^c]ar" => The car <a href="#learn-regex"><strong>par</strong></a>ked in the <a href="#learn-regex"><strong>gar</strong></a>age.
|
"[^c]ar" => The car <a href="#learn-regex"><strong>par</strong></a>ked in the <a href="#learn-regex"><strong>gar</strong></a>age.
|
||||||
@ -145,19 +146,17 @@ Im Allgemeinen stellt das Caret-Symbol `^` den Anfang einer Zeichenkette dar. We
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/nNNlq3/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/nNNlq3/1)
|
||||||
|
|
||||||
## 2.3 Repetitions
|
## 2.3 Wiederholungen
|
||||||
|
|
||||||
Following meta characters `+`, `*` or `?` are used to specify how many times a
|
Die Metazeichen `+`, `*` und `?` bieten einen einfachen Weg, anzugeben, wie oft sich ein bestimmter Teilausdruck wiederholen soll. Sie gehören damit zu den sogenannten "Quantifizierern" (eng. *quantifier*).
|
||||||
subpattern can occur. These meta characters act differently in different
|
Sie können sich je nach Situation unterschiedlich verhalten.
|
||||||
situations.
|
|
||||||
|
|
||||||
### 2.3.1 The Star
|
### 2.3.1 Stern
|
||||||
|
|
||||||
The symbol `*` matches zero or more repetitions of the preceding matcher. The
|
Das Symbol `*` stimmt mit beliebig vielen Wiederholungen des vorhergehenden Teilausdrucks überein. Der Ausdruck `a*` heißt:
|
||||||
regular expression `a*` means: zero or more repetitions of preceding lowercase
|
null, eins oder mehrere `a`s in Folge. Da sich der Stern auf Teilausdrücke bezieht, kann er auch bspw. hinter einer Zeichenklasse stehen
|
||||||
character `a`. But if it appears after a character set or class then it finds
|
und stimmt dann mit beliebig vielen Zeichen aus der Klasse in Folge überein. Zum Beispiel bedeutet der Ausdruck `[a-z]*`: eine
|
||||||
the repetitions of the whole character set. For example, der reguläre Ausdruck
|
beliebige Anzahl von Kleinbuchstaben in Folge.
|
||||||
`[a-z]*` means: any number of lowercase letters in a row.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"[a-z]*" => T<a href="#learn-regex"><strong>he</strong></a> <a href="#learn-regex"><strong>car</strong></a> <a href="#learn-regex"><strong>parked</strong></a> <a href="#learn-regex"><strong>in</strong></a> <a href="#learn-regex"><strong>the</strong></a> <a href="#learn-regex"><strong>garage</strong></a> #21.
|
"[a-z]*" => T<a href="#learn-regex"><strong>he</strong></a> <a href="#learn-regex"><strong>car</strong></a> <a href="#learn-regex"><strong>parked</strong></a> <a href="#learn-regex"><strong>in</strong></a> <a href="#learn-regex"><strong>the</strong></a> <a href="#learn-regex"><strong>garage</strong></a> #21.
|
||||||
@ -165,12 +164,10 @@ the repetitions of the whole character set. For example, der reguläre Ausdruck
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/7m8me5/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/7m8me5/1)
|
||||||
|
|
||||||
The `*` symbol can be used with the meta character `.` to match any string of
|
Das `*`-Symbol kann zusammen mit dem Metazeichen `.` verwendet werden, um mit einer vollkommen beliebigen Zeichenkette übereinzustimmen `.*`.
|
||||||
characters `.*`. The `*` symbol can be used with the whitespace character `\s`
|
Es kann auch mit der vordefinierten Zeichenklasse `\s` verwendet werden, um mit beliebig viel Leerraum (Leerzeichen, Tabulatoren, Zeilenumbrüchen)
|
||||||
to match a string of whitespace characters. For example, the expression
|
übereinzustimmen. Der Ausdruck `\s*cat\*` heißt zum Beispiel: null oder mehrere Leerzeichen, gefolgt von dem Buchstaben `c`, gefolgt vom Buchstaben `a`,
|
||||||
`\s*cat\s*` means: zero or more spaces, followed by lowercase character `c`,
|
gefolgt vom Buchstaben `t` und schließlich gefolgt von null oder mehreren Leerzeichen.
|
||||||
followed by lowercase character `a`, followed by lowercase character `t`,
|
|
||||||
followed by zero or more spaces.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"\s*cat\s*" => The fat<a href="#learn-regex"><strong> cat </strong></a>sat on the con<a href="#learn-regex"><strong>cat</strong></a>enation.
|
"\s*cat\s*" => The fat<a href="#learn-regex"><strong> cat </strong></a>sat on the con<a href="#learn-regex"><strong>cat</strong></a>enation.
|
||||||
@ -178,12 +175,11 @@ followed by zero or more spaces.
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/gGrwuz/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/gGrwuz/1)
|
||||||
|
|
||||||
### 2.3.2 The Plus
|
### 2.3.2 Plus
|
||||||
|
|
||||||
The symbol `+` matches one or more repetitions of the preceding character. For
|
Das `+`-Symbol stimmt mit einer oder mehr Wiederholungen des vorhergehenden Teilausdrucks überein. Der reguläre Ausdruck
|
||||||
example, der reguläre Ausdruck `c.+t` means: lowercase letter `c`, followed by
|
`c.+t` bedeutet: Buchstabe `c`, gefolgt von mindestens einem beliebigen Zeichen, gefolgt vom Buchstaben `t`. Das `t` ist dabei
|
||||||
at least one character, followed by the lowercase character `t`. It needs to be
|
das letzte `t` in der hier zu sehenden Übereinstimmung, wobei es hier auch weitere Übereinstimmungen gäbe (siehe "Teste den regulären Ausdruck").
|
||||||
clarified that `t` is the last `t` in the sentence.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"c.+t" => The fat <a href="#learn-regex"><strong>cat sat on the mat</strong></a>.
|
"c.+t" => The fat <a href="#learn-regex"><strong>cat sat on the mat</strong></a>.
|
||||||
@ -191,13 +187,11 @@ clarified that `t` is the last `t` in the sentence.
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/Dzf9Aa/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/Dzf9Aa/1)
|
||||||
|
|
||||||
### 2.3.3 The Question Mark
|
### 2.3.3 Fragezeichen
|
||||||
|
|
||||||
In regular expression the meta character `?` makes the preceding character
|
In regulären Ausdrücken sorgt das Metazeichen `?` dafür, dass der vorhergehende Teilausdruck optional wird.
|
||||||
optional. This symbol matches zero or one instance of the preceding character.
|
Somit stimmt es mit null oder einer Übereinstimmung des Teilausdrucks überein.
|
||||||
For example, der reguläre Ausdruck `[T]?he` means: Optional the uppercase
|
Zum Beispiel heißt der reguläre Ausdruck `[T]?he`: ein oder kein `T`, gefolgt von dem Buchstaben `h`, gefolgt von dem Buchstaben `e`.
|
||||||
letter `T`, followed by the lowercase character `h`, followed by the lowercase
|
|
||||||
character `e`.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"[T]he" => <a href="#learn-regex"><strong>The</strong></a> car is parked in the garage.
|
"[T]he" => <a href="#learn-regex"><strong>The</strong></a> car is parked in the garage.
|
||||||
@ -211,12 +205,11 @@ character `e`.
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/kPpO2x/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/kPpO2x/1)
|
||||||
|
|
||||||
## 2.4 Braces
|
## 2.4 Geschweifte Klammern
|
||||||
|
|
||||||
In regular expression braces that are also called quantifiers are used to
|
Geschweifte Klammern `{}` gehören wie die zuvor behandelten Metazeichen zu den Quantifizierern. Sie werden verwendet,
|
||||||
specify the number of times that a character or a group of characters can be
|
um genau anzugeben wie oft ein Teilausdruck minimal und maximal hintereinander übereinstimmen muss.
|
||||||
repeated. For example, der reguläre Ausdruck `[0-9]{2,3}` means: Match at least
|
Zum Beispiel bedeutet der reguläre Ausdruck `[0-9]{2,3}`: Mindestens zwei, aber maximal drei Ziffern (Zeichenfolge 0-9) hintereinander.
|
||||||
2 digits but not more than 3 ( characters in the range of 0 to 9).
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"[0-9]{2,3}" => The number was 9.<a href="#learn-regex"><strong>999</strong></a>7 but we rounded it off to <a href="#learn-regex"><strong>10</strong></a>.0.
|
"[0-9]{2,3}" => The number was 9.<a href="#learn-regex"><strong>999</strong></a>7 but we rounded it off to <a href="#learn-regex"><strong>10</strong></a>.0.
|
||||||
@ -224,9 +217,8 @@ repeated. For example, der reguläre Ausdruck `[0-9]{2,3}` means: Match at least
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/juM86s/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/juM86s/1)
|
||||||
|
|
||||||
We can leave out the second number. For example, der reguläre Ausdruck
|
Die zweite Zahl kann ausgelassen werden. Somit heißt der Ausdruck `[0-9]{2,}`: zwei oder mehr Ziffern in Folge.
|
||||||
`[0-9]{2,}` means: Match 2 or more digits. If we also remove the comma the
|
Wenn wir auch das Komma entfernen, heißt `[0-9]{3}`: genau drei Ziffern in Folge.
|
||||||
regular expression `[0-9]{3}` means: Match exactly 3 digits.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"[0-9]{2,}" => The number was 9.<a href="#learn-regex"><strong>9997</strong></a> but we rounded it off to <a href="#learn-regex"><strong>10</strong></a>.0.
|
"[0-9]{2,}" => The number was 9.<a href="#learn-regex"><strong>9997</strong></a> but we rounded it off to <a href="#learn-regex"><strong>10</strong></a>.0.
|
||||||
@ -240,16 +232,13 @@ regular expression `[0-9]{3}` means: Match exactly 3 digits.
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/Sivu30/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/Sivu30/1)
|
||||||
|
|
||||||
## 2.5 Capturing Group
|
## 2.5 Gruppierungen
|
||||||
|
|
||||||
A capturing group is a group of sub-patterns that is written inside Parentheses
|
Eine Gruppierung (eng. *capturing group*) fasst eine Gruppe von Teilausdrücken in Klammern `(...)` zusammen.
|
||||||
`(...)`. Like as we discussed before that in regular expression if we put a quantifier
|
Eine Gruppierung selbst ist ebenfalls ein Teilausdruck, weshalb Quantoren wie `{}`, `*` oder `?` auf sie angewendet werden können.
|
||||||
after a character then it will repeat the preceding character. But if we put quantifier
|
Zum Beispiel stimmt der reguläre Ausdruck `(ab)*` mit null oder mehr Vorkommen von `a` und `b` hintereinander überein.
|
||||||
after a capturing group then it repeats the whole capturing group. For example,
|
Auch das "Oder"-Metazeichen `|` kann innerhalb einer Gruppierung verwendet werden. Der reguläre Ausdruck `(c|g|p)ar` bedeutet:
|
||||||
der reguläre Ausdruck `(ab)*` matches zero or more repetitions of the character
|
kleines `c`, `g` oder `p`, gefolgt vom Buchstaben `a`, gefolgt vom Buchstaben `r`. Dies ist äquivalent zu `[cgp]ar`.
|
||||||
"ab". We can also use the alternation `|` meta character inside capturing group.
|
|
||||||
For example, der reguläre Ausdruck `(c|g|p)ar` means: lowercase character `c`,
|
|
||||||
`g` or `p`, followed by character `a`, followed by character `r`.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"(c|g|p)ar" => The <a href="#learn-regex"><strong>car</strong></a> is <a href="#learn-regex"><strong>par</strong></a>ked in the <a href="#learn-regex"><strong>gar</strong></a>age.
|
"(c|g|p)ar" => The <a href="#learn-regex"><strong>car</strong></a> is <a href="#learn-regex"><strong>par</strong></a>ked in the <a href="#learn-regex"><strong>gar</strong></a>age.
|
||||||
@ -257,16 +246,16 @@ For example, der reguläre Ausdruck `(c|g|p)ar` means: lowercase character `c`,
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/tUxrBG/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/tUxrBG/1)
|
||||||
|
|
||||||
Note that capturing groups do not only match but also capture the characters for use in
|
Gruppierungen stimmen nicht nur mit Zeichenketten überein, sondern "merken" sich auch die übereinstimmenden Zeichen in der Gruppe für die Verwendung in der Elternsprache
|
||||||
the parent language. The parent language could be python or javascript or virtually any
|
(auch Rückwärtsreferenz genannt).
|
||||||
language that implements regular expressions in a function definition.
|
Die Elternsprache kann Python, JavaScript oder sonst irgendeine Sprache sein, die reguläre Ausdrücke implementiert.
|
||||||
|
|
||||||
### 2.5.1 Non-capturing group
|
|
||||||
|
|
||||||
A non-capturing group is a capturing group that only matches the characters, but
|
### 2.5.1 Gruppierungen ohne Rückwärtsreferenz
|
||||||
does not capture the group. A non-capturing group is denoted by a `?` followed by a `:`
|
|
||||||
within parenthesis `(...)`. For example, der reguläre Ausdruck `(?:c|g|p)ar` is similar to
|
Gruppierungen ohne Rückwärtsreferenz (eng. *non-capturing groups*) sind Gruppierungen, die nur mit den Zeichen übereinstimmen, diese aber nicht für spätere Verwendung zwischenspeichern.
|
||||||
`(c|g|p)ar` in that it matches the same characters but will not create a capture group.
|
Solche Gruppierungen werden mit einem `?`, gefolgt von einem `:` in Klammern `(...)` definiert.
|
||||||
|
Somit gleicht der reguläre Ausdruck `(?:c|g|p)ar` dem Ausdruck `(c|g|p)ar` in seiner Übereinstimmung mit den Zeichenketten, aber im Gegensatz erzeugt er keine Rückwärtsreferenz.
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"(?:c|g|p)ar" => The <a href="#learn-regex"><strong>car</strong></a> is <a href="#learn-regex"><strong>par</strong></a>ked in the <a href="#learn-regex"><strong>gar</strong></a>age.
|
"(?:c|g|p)ar" => The <a href="#learn-regex"><strong>car</strong></a> is <a href="#learn-regex"><strong>par</strong></a>ked in the <a href="#learn-regex"><strong>gar</strong></a>age.
|
||||||
@ -274,22 +263,19 @@ within parenthesis `(...)`. For example, der reguläre Ausdruck `(?:c|g|p)ar` is
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/Rm7Me8/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/Rm7Me8/1)
|
||||||
|
|
||||||
Non-capturing groups can come in handy when used in find-and-replace functionality or
|
Gruppierungen ohne Rückwärtsreferenz können für Finden-und-Ersetzen oder in Kombination mit normalen Gruppierungen nützlich sein, um den Überblick zu behalten,
|
||||||
when mixed with capturing groups to keep the overview when producing any other kind of output.
|
wenn auf Basis der Übereinstimmungen eine Ausgabe erzeugt wird. Siehe auch [4. Lookaround](#4-lookaround).
|
||||||
See also [4. Lookaround](#4-lookaround).
|
|
||||||
|
|
||||||
## 2.6 Alternation
|
## 2.6 Alternation
|
||||||
|
|
||||||
In a regular expression, the vertical bar `|` is used to define alternation.
|
In einem regulären Ausdruck wird der Trennstrich `|` verwendet, um Alternativen (eng. *alternation*) zu definieren.
|
||||||
Alternation is like an OR statement between multiple expressions. Now, you may be
|
Alternation ist wie ein "ODER" zwischen mehreren Teilausdrücken. Nun könnte man annehmen, dass
|
||||||
thinking that character set and alternation works the same way. But the big
|
Zeichenklassen und Alternation auf die gleiche Art und Weise funktionieren. Aber der große Unterschied
|
||||||
difference between character set and alternation is that character set works on
|
zwischen diesen beiden ist, dass Zeichenklassen für einzelne Zeichen funktionieren, während für Alternationen
|
||||||
character level but alternation works on expression level. For example, the
|
beliebige Teilausdrücke verwendet werden können. So heißt der reguläre Ausdruck `(T|t)he|car` beispielsweise:
|
||||||
regular expression `(T|t)he|car` means: either (uppercase character `T` or lowercase
|
Entweder ein großes `T` oder kleines `t`, dann der Buchstabe `h` gefolgt vom Buchstaben `e` ODER
|
||||||
`t`, followed by lowercase character `h`, followed by lowercase character `e`) OR
|
`c`, gefolgt von `a`, gefolgt von `r`. Man beachte die Klammern, die zur Trennung der einen Alternation von der anderen
|
||||||
(lowercase character `c`, followed by lowercase character `a`, followed by
|
gesetzt wurden.
|
||||||
lowercase character `r`). Note that I put the parentheses for clarity, to show that either expression
|
|
||||||
in parentheses can be met and it will match.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"(T|t)he|car" => <a href="#learn-regex"><strong>The</strong></a> <a href="#learn-regex"><strong>car</strong></a> is parked in <a href="#learn-regex"><strong>the</strong></a> garage.
|
"(T|t)he|car" => <a href="#learn-regex"><strong>The</strong></a> <a href="#learn-regex"><strong>car</strong></a> is parked in <a href="#learn-regex"><strong>the</strong></a> garage.
|
||||||
@ -297,18 +283,15 @@ in parentheses can be met and it will match.
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/fBXyX0/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/fBXyX0/1)
|
||||||
|
|
||||||
## 2.7 Escaping special character
|
## 2.7 Escaping
|
||||||
|
|
||||||
Backslash `\` is used in regular expression to escape the next character. This
|
Der Backslash `\` wird in regulären Ausdrücken verwendet, um die besondere Bedeutung des folgenden Zeichens aufzuheben (eng. *escape*) oder ihm eine besondere Bedeutung zu verleihen
|
||||||
allows us to specify a symbol as a matching character including reserved
|
(s. [Vordefinierte Zeichenklassen](#3-vordefinierte-zeichenklassen)).
|
||||||
characters `{ } [ ] / \ + * . $ ^ | ?`. To use a special character as a matching
|
Er erlaubt es, für andere Zwecke reservierte Zeichen wie die Metazeichen `{ } [ ] / \ + * . $ ^ | ?` als Literale, also wörtliche Übereinstimmungen zu nutzen.
|
||||||
character prepend `\` before it.
|
Um mit einem besonderen Zeichen wortwörtlich übereinzustimmen, muss es auf ein `\` folgen.
|
||||||
|
|
||||||
For example, der reguläre Ausdruck `.` is used to match any character except
|
Der reguläre Ausdruck `.` zum Beispiel wird benutzt, um mit einem beliebigen Zeichen übereinzustimmen.
|
||||||
newline. Now to match `.` in an input string der reguläre Ausdruck
|
Der Ausdruck `(f|c|m)at\.?` hebt diese Bedeutung auf: `f`, `c` oder `m`, gefolgt von `a`, gefolgt von `t`, schließlich gefolgt von einem optionalen `.`.
|
||||||
`(f|c|m)at\.?` means: lowercase letter `f`, `c` or `m`, followed by lowercase
|
|
||||||
character `a`, followed by lowercase letter `t`, followed by optional `.`
|
|
||||||
character.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"(f|c|m)at\.?" => The <a href="#learn-regex"><strong>fat</strong></a> <a href="#learn-regex"><strong>cat</strong></a> sat on the <a href="#learn-regex"><strong>mat.</strong></a>
|
"(f|c|m)at\.?" => The <a href="#learn-regex"><strong>fat</strong></a> <a href="#learn-regex"><strong>cat</strong></a> sat on the <a href="#learn-regex"><strong>mat.</strong></a>
|
||||||
@ -316,24 +299,19 @@ character.
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/DOc5Nu/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/DOc5Nu/1)
|
||||||
|
|
||||||
## 2.8 Anchors
|
## 2.8 Anker
|
||||||
|
|
||||||
In regular expressions, we use anchors to check if the matching symbol is the
|
In regulären Audrücken werden Anker (eng. *anchor*) verwendet, um zu überprüfen, ob der Teilausdruck mit dem
|
||||||
starting symbol or ending symbol of the input string. Anchors are of two types:
|
Anfang oder dem Ende der Teilausgabe übereinstimmt. Es gibt zwei Arten von Ankern: das Zirkumflex `^`
|
||||||
First type is Caret `^` that check if the matching character is the start
|
stimmt mit dem Anfang, das Dollarzeichen `$` mit dem Ende der Eingabe überein.
|
||||||
character of the input and the second type is Dollar `$` that checks if matching
|
|
||||||
character is the last character of the input string.
|
|
||||||
|
|
||||||
### 2.8.1 Caret
|
### 2.8.1 Zirkumflex
|
||||||
|
|
||||||
Caret `^` symbol is used to check if matching character is the first character
|
Das Zirkumflex `^` (eng. *caret*) wird benutzt um zu überprüfen, ob der Teilausdruck mit dem Anfang der Zeichenkette übereinstimmt.
|
||||||
of the input string. If we apply the following regular expression `^a` (if a is
|
Wenn wir den regulären Ausdruck `^a` auf die Eingabe `abc` anwenden, stimmt er mit `a` überein.
|
||||||
the starting symbol) to input string `abc` it matches `a`. But if we apply
|
Aber wenn wir auf die gleiche Eingabe den Ausdruck `^b` anwenden, gibt es keine Übereinstimmungen, weil in der Zeichenkette `abc` kein "b"
|
||||||
regular expression `^b` on above input string it does not match anything.
|
am Anfang steht. Schauen wir uns einen anderen Ausdruck an: `^(T|t)he`. Dieser bedeutet: kleines `t` oder großes `T` am Anfang der Eingabe,
|
||||||
Because in input string `abc` "b" is not the starting symbol. Let's take a look
|
gefolgt von `h`, gefolgt von `e`.
|
||||||
at another regular expression `^(T|t)he` which means: uppercase character `T` or
|
|
||||||
lowercase character `t` is the start symbol of the input string, followed by
|
|
||||||
lowercase character `h`, followed by lowercase character `e`.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"(T|t)he" => <a href="#learn-regex"><strong>The</strong></a> car is parked in <a href="#learn-regex"><strong>the</strong></a> garage.
|
"(T|t)he" => <a href="#learn-regex"><strong>The</strong></a> car is parked in <a href="#learn-regex"><strong>the</strong></a> garage.
|
||||||
@ -349,10 +327,8 @@ lowercase character `h`, followed by lowercase character `e`.
|
|||||||
|
|
||||||
### 2.8.2 Dollar
|
### 2.8.2 Dollar
|
||||||
|
|
||||||
Dollar `$` symbol is used to check if matching character is the last character
|
Das Dollarzeichen `$` wird benutzt um zu überprüfen, ob der Teilausdruck mit dem Ende der Zeichenkette übereinstimmt.
|
||||||
of the input string. For example, regular expression `(at\.)$` means: a
|
Der reguläre Ausdruck `(at\.)$` etwa bedeutet: `a`, gefolgt von `t` und dann `.` am Ende der Eingabe.
|
||||||
lowercase character `a`, followed by lowercase character `t`, followed by a `.`
|
|
||||||
character and the matcher must be end of the string.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"(at\.)" => The fat c<a href="#learn-regex"><strong>at.</strong></a> s<a href="#learn-regex"><strong>at.</strong></a> on the m<a href="#learn-regex"><strong>at.</strong></a>
|
"(at\.)" => The fat c<a href="#learn-regex"><strong>at.</strong></a> s<a href="#learn-regex"><strong>at.</strong></a> on the m<a href="#learn-regex"><strong>at.</strong></a>
|
||||||
@ -366,53 +342,47 @@ character and the matcher must be end of the string.
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/t0AkOd/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/t0AkOd/1)
|
||||||
|
|
||||||
## 3. Shorthand Character Sets
|
## 3. Vordefinierte Zeichenklassen
|
||||||
|
|
||||||
Regular expression provides shorthands for the commonly used character sets,
|
Reguläre Ausdrücke haben Kürzel für die am häufigsten benötigten Zeichenklassen, was viele Ausdrücke vereinfacht und kürzer macht.
|
||||||
which offer convenient shorthands for commonly used regular expressions. The
|
Das sind die vordefinierten Zeichenklassen:
|
||||||
shorthand character sets are as follows:
|
|
||||||
|
|
||||||
|Shorthand|Description|
|
|Shorthand|Description|
|
||||||
|:----:|----|
|
|:----:|----|
|
||||||
|.|Any character except new line|
|
|.|Beliebiges Zeichen außer Zeilenumbruch|
|
||||||
|\w|Matches alphanumeric characters: `[a-zA-Z0-9_]`|
|
|\w|Stimmt mit alphanumerischen Zeichen überein: `[a-zA-Z0-9_]`|
|
||||||
|\W|Matches non-alphanumeric characters: `[^\w]`|
|
|\W|Stimmt mit nicht-alphanumerischen Zeichen überein: `[^\w]`|
|
||||||
|\d|Matches digit: `[0-9]`|
|
|\d|Stimmt mit Ziffern überein: `[0-9]`|
|
||||||
|\D|Matches non-digit: `[^\d]`|
|
|\D|Stimmt mit Zeichen, die keine Ziffern sind überein: `[^\d]`|
|
||||||
|\s|Matches whitespace character: `[\t\n\f\r\p{Z}]`|
|
|\s|Stimmt mit Leerraum überein: `[\t\n\f\r\p{Z}]`|
|
||||||
|\S|Matches non-whitespace character: `[^\s]`|
|
|\S|Stimmt mit allem außer Leerraum überein: `[^\s]`|
|
||||||
|
|
||||||
## 4. Lookaround
|
## 4. Lookaround
|
||||||
|
|
||||||
Lookbehind and lookahead (also called lookaround) are specific types of
|
Lookbehind ("zurückschauen") und Lookahead ("vorausschauen") (auch Lookaround ("Umsehen") genannt) sind besondere Arten von **Gruppierungen ohne Rückwärtsreferenz**
|
||||||
***non-capturing groups*** (Used to match the pattern but not included in matching
|
(zur Erinnerung: das sind Gruppierungen, die zwar mit dem Muster übereinstimmen, aber sich die Übereinstimmung nicht "merken").
|
||||||
list). Lookarounds are used when we have the condition that this pattern is
|
Sie werden in Situationen verwendet, wo wir ein Muster einfangen wollen, dem andere Muster folgen oder vorhergehen.
|
||||||
preceded or followed by another certain pattern. For example, we want to get all
|
Zum Beispiel wollen wir alle Zahlen aus der Zeichenkette `$4.44 and $10.88`, vor denen ein Dollarzeichen `$` steht. Wir benutzen dafür den folgenden regulären Audruck:
|
||||||
numbers that are preceded by `$` character from the following input string
|
`(?<=\$)[0-9.]*`. Das heißt: Stimme mit allen Zeichenketten überein, die Ziffern `0-9` oder Punkte `.` enthalten und die einem Dollarzeichen `$` folgen.
|
||||||
`$4.44 and $10.88`. We will use following regular expression `(?<=\$)[0-9\.]*`
|
|
||||||
which means: get all the numbers which contain `.` character and are preceded
|
|
||||||
by `$` character. Following are the lookarounds that are used in regular
|
|
||||||
expressions:
|
|
||||||
|
|
||||||
|Symbol|Description|
|
Das sind die Lookarounds, die es gibt:
|
||||||
|
|
||||||
|
|Symbol|Name|
|
||||||
|:----:|----|
|
|:----:|----|
|
||||||
|?=|Positive Lookahead|
|
|?=|Positiver Lookahead|
|
||||||
|?!|Negative Lookahead|
|
|?!|Negativer Lookahead|
|
||||||
|?<=|Positive Lookbehind|
|
|?<=|Positiver Lookbehind|
|
||||||
|?<!|Negative Lookbehind|
|
|?<!|Negativer Lookbehind|
|
||||||
|
|
||||||
### 4.1 Positive Lookahead
|
### 4.1 Positiver Lookahead
|
||||||
|
|
||||||
The positive lookahead asserts that the first part of the expression must be
|
Ein positiver Lookahead versichert, dass der Teilausdruck vor dem Lookahead von dem Lookahead-Teilausdruck gefolgt wird.
|
||||||
followed by the lookahead expression. The returned match only contains the text
|
Das Ergebnis der Übereinstimmung beinhaltet dabei nur den Teilausdruck vor dem Lookahead.
|
||||||
that is matched by the first part of the expression. To define a positive
|
Klammern werden genutzt, um positive Lookaheads zu definieren. Nach der öffnenden Klammer müssen ein Fragezeichen und ein Gleichheitszeichen
|
||||||
lookahead, parentheses are used. Within those parentheses, a question mark with
|
stehen: `(?=...)`. Der Lookahead-Ausdruck wird nach dem Gleichheitszeichen notiert.
|
||||||
equal sign is used like this: `(?=...)`. Lookahead expression is written after
|
Zum Beispiel bedeutet der reguläre Ausdruck `(T|t)he(?=\sfat)`: kleines `t` oder großes `T`, dann ein `h`, dann ein `e`. Der positive Lookahead in den Klammern
|
||||||
the equal sign inside parentheses. For example, der reguläre Ausdruck
|
ist eine zusätzliche Bedingung, die dafür sorgt, dass der Ausdruck nur mit `the` oder `The` übereinstimmt, welches von einem Leerzeichen und den Buchstaben
|
||||||
`(T|t)he(?=\sfat)` means: optionally match lowercase letter `t` or uppercase
|
`f`, `a` und `t` gefolgt wird.
|
||||||
letter `T`, followed by letter `h`, followed by letter `e`. In parentheses we
|
|
||||||
define positive lookahead which tells regular expression engine to match `The`
|
|
||||||
or `the` which are followed by the word `fat`.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"(T|t)he(?=\sfat)" => <a href="#learn-regex"><strong>The</strong></a> fat cat sat on the mat.
|
"(T|t)he(?=\sfat)" => <a href="#learn-regex"><strong>The</strong></a> fat cat sat on the mat.
|
||||||
@ -420,15 +390,11 @@ or `the` which are followed by the word `fat`.
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/IDDARt/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/IDDARt/1)
|
||||||
|
|
||||||
### 4.2 Negative Lookahead
|
### 4.2 Negativer Lookahead
|
||||||
|
|
||||||
Negative lookahead is used when we need to get all matches from input string
|
Negative Lookaheads werden verwendet, um alle Übereinstimmungen in einer Zeichenkette zu bekommen, auf die **nicht** ein bestimmtes Muster folgt.
|
||||||
that are not followed by a pattern. Negative lookahead is defined same as we define
|
Ein Negativer Lookahead wird wie ein positiver Lookahead definiert, nur dass statt einem Gleichheitszeichen ein Ausrufezeichen `!` benutzt wird, d.h.
|
||||||
positive lookahead but the only difference is instead of equal `=` character we
|
`(?!...)`. Aus dem regulären Ausdruck `(T|t)he(?!\sfat)` folgt somit: alle `The` oder `the`, auf die **kein** Leerzeichen und das Wort `fat` folgt, stimmen überein.
|
||||||
use negation `!` character i.e. `(?!...)`. Let's take a look at the following
|
|
||||||
regular expression `(T|t)he(?!\sfat)` which means: get all `The` or `the` words
|
|
||||||
from input string that are not followed by the word `fat` precedes by a space
|
|
||||||
character.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"(T|t)he(?!\sfat)" => The fat cat sat on <a href="#learn-regex"><strong>the</strong></a> mat.
|
"(T|t)he(?!\sfat)" => The fat cat sat on <a href="#learn-regex"><strong>the</strong></a> mat.
|
||||||
@ -436,12 +402,11 @@ character.
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/V32Npg/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/V32Npg/1)
|
||||||
|
|
||||||
### 4.3 Positive Lookbehind
|
### 4.3 Positiver Lookbehind
|
||||||
|
|
||||||
Positive lookbehind is used to get all the matches that are preceded by a
|
Positive Lookbehinds werden verwendet, um alle Übereinstimmungen in einer Zeichenkette zu bekommen, denen ein bestimmtes Muster vorhergeht.
|
||||||
specific pattern. Positive lookbehind is denoted by `(?<=...)`. For example, the
|
Postive Lookbehinds werden mit `(?<=...)` notiert. Der reguläre Ausdruck `(?<=(T|t)he\s)(fat|mat)` zum Beispiel bedeutet: alle `fat` oder `mat`,
|
||||||
regular expression `(?<=(T|t)he\s)(fat|mat)` means: get all `fat` or `mat` words
|
die nach `The ` oder `the ` kommen, stimmen überein.
|
||||||
from input string that are after the word `The` or `the`.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"(?<=(T|t)he\s)(fat|mat)" => The <a href="#learn-regex"><strong>fat</strong></a> cat sat on the <a href="#learn-regex"><strong>mat</strong></a>.
|
"(?<=(T|t)he\s)(fat|mat)" => The <a href="#learn-regex"><strong>fat</strong></a> cat sat on the <a href="#learn-regex"><strong>mat</strong></a>.
|
||||||
@ -449,12 +414,11 @@ from input string that are after the word `The` or `the`.
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/avH165/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/avH165/1)
|
||||||
|
|
||||||
### 4.4 Negative Lookbehind
|
### 4.4 Negativer Lookbehind
|
||||||
|
|
||||||
Negative lookbehind is used to get all the matches that are not preceded by a
|
Negative Lookbehinds werden verwendet, um alle Übereinstimmungen in einer Zeichenkette zu bekommen, denen **nicht** ein bestimmtes Muster vorhergeht.
|
||||||
specific pattern. Negative lookbehind is denoted by `(?<!...)`. For example, the
|
Negative Lookbehinds werden mit `(?<!...)` notiert. Der reguläre Ausdruck `(?<!(T|t)he\s)(cat)` zum Beispiel bedeutet: alle `cat`, die nicht nach
|
||||||
regular expression `(?<!(T|t)he\s)(cat)` means: get all `cat` words from input
|
`The ` oder `the ` kommen, stimmen überein.
|
||||||
string that are not after the word `The` or `the`.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"(?<!(T|t)he\s)(cat)" => The cat sat on <a href="#learn-regex"><strong>cat</strong></a>.
|
"(?<!(T|t)he\s)(cat)" => The cat sat on <a href="#learn-regex"><strong>cat</strong></a>.
|
||||||
@ -462,26 +426,24 @@ string that are not after the word `The` or `the`.
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/8Efx5G/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/8Efx5G/1)
|
||||||
|
|
||||||
## 5. Flags
|
## 5. Modifikatoren
|
||||||
|
|
||||||
Flags are also called modifiers because they modify the output of a regular
|
Modifikatoren (eng. *flags* oder *modifiers*) verändern die Ausgabe eines regulären Ausdrucks. Sie können in beliebiger Kombination oder Reihenfolge
|
||||||
expression. These flags can be used in any order or combination, and are an
|
genutzt werden und sind ein integraler Bestandteil regulärer Ausdrücke.
|
||||||
integral part of the RegExp.
|
|
||||||
|
|
||||||
|Flag|Description|
|
|
||||||
|
|Modifikator|Beschreibung|
|
||||||
|:----:|----|
|
|:----:|----|
|
||||||
|i|Case insensitive: Sets matching to be case-insensitive.|
|
|i|Schreibungsunabhängig: Unterschiede bei Groß- und Kleinschreibung in den Mustern werden ignoriert.|
|
||||||
|g|Global Search: Search for a pattern throughout the input string.|
|
|g|Globale Suche: Die Suche geht durch die gesamte Eingabe.|
|
||||||
|m|Multiline: Anchor meta character works on each line.|
|
|m|Mehrzeilig: Anker-Metazeichen funktionieren für Anfang/Ende jeder Zeile.|
|
||||||
|
|
||||||
### 5.1 Case Insensitive
|
### 5.1 Schreibungsunabhängig
|
||||||
|
|
||||||
The `i` modifier is used to perform case-insensitive matching. For example, the
|
Der `i` Modifikator wird benutzt, um schreibungsunbhängige Übereinstimmungen zu finden. Zum Beispiel heißt der reguläre Ausdruck
|
||||||
regular expression `/The/gi` means: uppercase letter `T`, followed by lowercase
|
`/The/gi`: großes `T`, gefolgt von `h`, dann `e`. Und am Ende des Ausdrucks ist der `i` Modifikator zu finden, welcher der Maschine
|
||||||
character `h`, followed by character `e`. And at the end of regular expression
|
zu verstehen gibt, dass Groß- und Kleinschreibung ignoriert werden sollen. Wie zu sehen ist, wird auch der `g` Modifikator benutzt,
|
||||||
the `i` flag tells der reguläre Ausdruck engine to ignore the case. As you can
|
da wir die gesamte Eingabe nach dem Muster absuchen wollen.
|
||||||
see we also provided `g` flag because we want to search for the pattern in the
|
|
||||||
whole input string.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"The" => <a href="#learn-regex"><strong>The</strong></a> fat cat sat on the mat.
|
"The" => <a href="#learn-regex"><strong>The</strong></a> fat cat sat on the mat.
|
||||||
@ -495,13 +457,12 @@ whole input string.
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/ahfiuh/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/ahfiuh/1)
|
||||||
|
|
||||||
### 5.2 Global search
|
### 5.2 Globale Suche
|
||||||
|
|
||||||
The `g` modifier is used to perform a global match (find all matches rather than
|
Der `g` Modifikator wird benutzt, um eine globale Suche durchzuführen (alle Übereinstimmungen finden, nicht nach der ersten aufhören).
|
||||||
stopping after the first match). For example, der reguläre Ausdruck`/.(at)/g`
|
Zum Beispiel heißt der reguläre Ausdruck `/.(at)/g`: ein beliebiges Zeichen (außer Zeilenumbruch), gefolgt von `a`, gefolgt von `t`.
|
||||||
means: any character except new line, followed by lowercase character `a`,
|
Weil wir den `g` Modifikator angegeben haben, findet der reguläre Ausdruck nun alle Übereinstimmungen in der Eingabe, nicht nur die erste
|
||||||
followed by lowercase character `t`. Because we provided `g` flag at the end of
|
(was das Standardverhalten ist).
|
||||||
der reguläre Ausdruck now it will find all matches in the input string, not just the first one (which is the default behavior).
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"/.(at)/" => The <a href="#learn-regex"><strong>fat</strong></a> cat sat on the mat.
|
"/.(at)/" => The <a href="#learn-regex"><strong>fat</strong></a> cat sat on the mat.
|
||||||
@ -515,15 +476,12 @@ der reguläre Ausdruck now it will find all matches in the input string, not jus
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/dO1nef/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/dO1nef/1)
|
||||||
|
|
||||||
### 5.3 Multiline
|
### 5.3 Mehrzeilig
|
||||||
|
|
||||||
The `m` modifier is used to perform a multi-line match. As we discussed earlier
|
Der `m` Modifikator wird benutzt, um eine mehrzeilige Suche durchzuführen. Wie zuvor erwähnt werden Anker `(^, $)` genutzt, um zu überprüfen,
|
||||||
anchors `(^, $)` are used to check if pattern is the beginning of the input or
|
ob ein Muster dem Anfang oder dem Ende der Eingabe entspricht. Wenn wir stattdessen wollen, dass Anker zeilenweise funktionieren, nutzen wir den `m`
|
||||||
end of the input string. But if we want that anchors works on each line we use
|
Modifikator. Zum Beispiel bedeutet der reguläre Ausdruck `/at(.)?$/gm`: `a`, gefolgt von `t`, dann optional ein beliebiges Zeichen außer
|
||||||
`m` flag. For example, der reguläre Ausdruck `/at(.)?$/gm` means: lowercase
|
Zeilenumbruch. Wegen des `m` Modifikators wird das Muster nun auf das Ende jeder Zeile statt nur das Ende der gesamten Eingabe angewandt.
|
||||||
character `a`, followed by lowercase character `t`, optionally anything except
|
|
||||||
new line. And because of `m` flag now regular expression engine matches pattern
|
|
||||||
at the end of each line in a string.
|
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"/.at(.)?$/" => The fat
|
"/.at(.)?$/" => The fat
|
||||||
@ -541,9 +499,10 @@ at the end of each line in a string.
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/E88WE2/1)
|
[Teste den regulären Ausdruck](https://regex101.com/r/E88WE2/1)
|
||||||
|
|
||||||
## 6. Greedy vs lazy matching
|
## 6. Gierige vs Faule Übereinstimmung
|
||||||
By default regex will do greedy matching , means it will match as long as
|
|
||||||
possible. we can use `?` to match in lazy way means as short as possible
|
Standardmäßig finden reguläre Ausdrücke Übereinstimmungen mit Gier (eng. *greed*), d.h. es wird nach den längsten Übereinstimmungen gesucht.
|
||||||
|
Mit `?` können wir faul (eng. *lazy*) suchen, d.h. es wird nach den kürzesten Übereinstimmungen gesucht.
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
"/(.*at)/" => <a href="#learn-regex"><strong>The fat cat sat on the mat</strong></a>. </pre>
|
"/(.*at)/" => <a href="#learn-regex"><strong>The fat cat sat on the mat</strong></a>. </pre>
|
||||||
@ -557,14 +516,13 @@ possible. we can use `?` to match in lazy way means as short as possible
|
|||||||
|
|
||||||
[Teste den regulären Ausdruck](https://regex101.com/r/AyAdgJ/2)
|
[Teste den regulären Ausdruck](https://regex101.com/r/AyAdgJ/2)
|
||||||
|
|
||||||
|
## Beitragen
|
||||||
|
|
||||||
## Contribution
|
* Öffne pull requests mit Verbesserungen
|
||||||
|
* Diskutiere Ideen in issues
|
||||||
|
* Erzähl es anderen
|
||||||
|
* Gib Rückmeldung [](https://twitter.com/ziishaned)
|
||||||
|
|
||||||
* Open pull request with improvements
|
## Lizenz
|
||||||
* Discuss ideas in issues
|
|
||||||
* Spread the word
|
|
||||||
* Reach out with any feedback [](https://twitter.com/ziishaned)
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
|
MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user