mirror of
https://github.com/ziishaned/learn-regex.git
synced 2025-08-23 11:56:10 -04:00
Continue work until flags
This commit is contained in:
parent
4fc2c9ed70
commit
e21f70b7dc
@ -46,14 +46,14 @@ Der abgebildete reguläre Ausdruck erlaubt bspw. folgende Eingaben `john_doe`, `
|
|||||||
- [Basis Vergleiche](#1-basis-vergleiche)
|
- [Basis Vergleiche](#1-basis-vergleiche)
|
||||||
- [Sonderzeichen](#2-sonderzeichen)
|
- [Sonderzeichen](#2-sonderzeichen)
|
||||||
- [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-der-stern)
|
||||||
- [Plus +](#232-plus)
|
- [Plus +](#232-das-plus)
|
||||||
- [Fragezeichen ?](#233-fragezeichen)
|
- [Fragezeichen ?](#233-das-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)
|
- [Auswertung von Sonderzeichen](#27-auswertung-von-sonderzeichen)
|
||||||
- [Anker](#28-anker)
|
- [Anker](#28-anker)
|
||||||
@ -89,29 +89,30 @@ 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.
|
||||||
@ -120,7 +121,7 @@ Der Punkt `.` ist die einfachste Möglichkeit von Sonderzeichen. Das Sonderzeich
|
|||||||
|
|
||||||
## 2.2 Zeichenklasse
|
## 2.2 Zeichenklasse
|
||||||
|
|
||||||
Zeichenklassen werden auch als Zeichenmengen oder -sätze bezeichnet. 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`.
|
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.
|
||||||
@ -137,7 +138,7 @@ Ein Punkt in einer Zeichenklasse bedeutet, anders als sonst, einen wörtlichen P
|
|||||||
|
|
||||||
### 2.2.1 Negierte Zeichenklasse
|
### 2.2.1 Negierte Zeichenklasse
|
||||||
|
|
||||||
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. Als Beispiel, der reguläre Ausdruck `[^c]ar` bedeutet: ein beliebiges Zeichen 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.
|
||||||
@ -147,7 +148,7 @@ Im Allgemeinen stellt das Zirkumflex `^` den Anfang einer Zeichenkette dar. Wenn
|
|||||||
|
|
||||||
## 2.3 Wiederholungen
|
## 2.3 Wiederholungen
|
||||||
|
|
||||||
Die Metazeichen `+`, `*` und `?` bieten einen einfachen Weg, anzugeben, wie oft sich ein bestimmter Teilausdruck wiederholen soll. Sie gehören damit zu den sogenannten "Quantoren".
|
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*).
|
||||||
Sie können sich je nach Situation unterschiedlich verhalten.
|
Sie können sich je nach Situation unterschiedlich verhalten.
|
||||||
|
|
||||||
### 2.3.1 Der Stern
|
### 2.3.1 Der Stern
|
||||||
@ -206,7 +207,7 @@ Zum Beispiel heißt der reguläre Ausdruck `[T]?he`: ein oder kein `T`, gefolgt
|
|||||||
|
|
||||||
## 2.4 Geschweifte Klammern
|
## 2.4 Geschweifte Klammern
|
||||||
|
|
||||||
Geschweifte Klammern `{}` gehören wie die zuvor behandelten Metazeichen zu den Quantoren. Sie werden verwendet,
|
Geschweifte Klammern `{}` gehören wie die zuvor behandelten Metazeichen zu den Quantifizierern. Sie werden verwendet,
|
||||||
um genau anzugeben wie oft ein Teilausdruck minimal und maximal hintereinander übereinstimmen muss.
|
um genau anzugeben wie oft ein Teilausdruck minimal und maximal hintereinander übereinstimmen muss.
|
||||||
Zum Beispiel bedeutet der reguläre Ausdruck `[0-9]{2,3}`: Mindestens zwei, aber maximal drei Ziffern (Zeichenfolge 0-9) hintereinander.
|
Zum Beispiel bedeutet der reguläre Ausdruck `[0-9]{2,3}`: Mindestens zwei, aber maximal drei Ziffern (Zeichenfolge 0-9) hintereinander.
|
||||||
|
|
||||||
@ -233,16 +234,11 @@ Wenn wir auch das Komma entfernen, heißt `[0-9]{3}`: genau drei Ziffern in Folg
|
|||||||
|
|
||||||
## 2.5 Gruppierungen
|
## 2.5 Gruppierungen
|
||||||
|
|
||||||
Eine Gruppierung fasst eine Gruppe von Teilausdrücken in Klammern `(...)` zusammen.
|
Eine Gruppierung (eng. *capturing group*) fasst eine Gruppe von Teilausdrücken in Klammern `(...)` zusammen.
|
||||||
|
Eine Gruppierung selbst ist ebenfalls ein Teilausdruck, weshalb Quantoren wie `{}`, `*` oder `?` auf sie angewendet werden können.
|
||||||
A capturing group is a group of sub-patterns that is written inside Parentheses
|
Zum Beispiel stimmt der reguläre Ausdruck `(ab)*` mit null oder mehr Vorkommen von `a` und `b` hintereinander überein.
|
||||||
`(...)`. Like as we discussed before that in regular expression if we put a quantifier
|
Auch das "Oder"-Metazeichen `|` kann innerhalb einer Gruppierung verwendet werden. Der reguläre Ausdruck `(c|g|p)ar` bedeutet:
|
||||||
after a character then it will repeat the preceding character. But if we put quantifier
|
kleines `c`, `g` oder `p`, gefolgt vom Buchstaben `a`, gefolgt vom Buchstaben `r`. Dies ist äquivalent zu `[cgp]ar`.
|
||||||
after a capturing group then it repeats the whole capturing group. For example,
|
|
||||||
der reguläre Ausdruck `(ab)*` matches zero or more repetitions of the character
|
|
||||||
"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.
|
||||||
@ -250,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.
|
||||||
@ -267,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.
|
||||||
@ -290,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 Escape
|
||||||
|
|
||||||
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>
|
||||||
@ -309,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.
|
||||||
@ -342,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>
|
||||||
@ -359,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 ("nach hinten sehend") und Lookahead ("vorausschauend") (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.
|
||||||
@ -413,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.
|
||||||
@ -429,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>.
|
||||||
@ -442,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>.
|
||||||
@ -455,19 +426,22 @@ 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
|
||||||
|
|
||||||
|
Der `i` Modifikator wird benutzt, um schreibungsunbhängige Übereinstimmungen zu finden. Zum Beispiel heißt der reguläre Ausdruck
|
||||||
|
`/The/gi`: großes `T`
|
||||||
|
|
||||||
The `i` modifier is used to perform case-insensitive matching. For example, the
|
The `i` modifier is used to perform case-insensitive matching. For example, the
|
||||||
regular expression `/The/gi` means: uppercase letter `T`, followed by lowercase
|
regular expression `/The/gi` means: uppercase letter `T`, followed by lowercase
|
||||||
|
Loading…
x
Reference in New Issue
Block a user