Reguläre Ausdrücke, auch Regex genannt, können manchmal ganz schön knifflig sein!
Tauchen wir ein in die Welt der regulären Ausdrücke und ihre vielfältigen Muster. Wir werden uns mit Mustern beschäftigen, die auf den ersten Blick wie ein unübersichtliches Durcheinander an Zeichen wirken. Dabei werden wir die Bedeutung jedes einzelnen Zeichens in einem solchen Ausdruck entschlüsseln.
Nach dieser Lektüre werden Sie in der Lage sein, eigene reguläre Ausdrücke zu kreieren und diese nach Belieben einzusetzen. Zum Schluss stellen wir Ihnen noch einige Online-Tools zum Testen von RegEx vor, damit Sie Ihre Ausdrücke erstellen und auf Herz und Nieren prüfen können.
Einführung
Ein regulärer Ausdruck, kurz RegEx, ist eine beliebige Sequenz von Zeichen, die als Suchmuster für Zeichen oder Zeichenketten dient.
Um beispielsweise festzustellen, ob eine Zeichenkette das Wort „Apfel“ enthält, verwenden wir den regulären Ausdruck „/Apfel/“, um in der Zeichenfolge danach zu suchen. Ein weiteres Beispiel: Mit „/[0-9]/“ prüfen wir, ob eine bestimmte Zeichenfolge eine Ziffer zwischen 0 und 9 enthält.
Einsatzgebiete regulärer Ausdrücke
In der modernen Webentwicklung sind reguläre Ausdrücke ein unverzichtbares Werkzeug für vielfältige Aufgaben. Sie werden beispielsweise zur Validierung von Webformularen, in Suchmaschinen, bei der lexikalischen Analyse in IDEs und Texteditoren sowie zur Bearbeitung von Dokumenten eingesetzt.
Wir alle nutzen oft „STRG + F“, um innerhalb eines Dokuments oder Codeabschnitts nach bestimmten Wörtern, Phrasen oder Ausdrücken zu suchen. Dies ist ein sehr anschauliches Beispiel für den praktischen Einsatz regulärer Ausdrücke.
Bevor wir fortfahren, werfen wir einen Blick auf einen häufig verwendeten regulären Ausdruck.
Können Sie erraten 🤔, wofür dieser RegEx verwendet wird?
^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$
Keine Sorge, wenn es Ihnen nicht sofort gelingt. Ich bin zuversichtlich, dass Sie es nach der Lektüre dieses Artikels herausfinden werden.
Beginnen wir mit den Grundlagen von RegEx.
Token
Zunächst betrachten wir die einzelnen Symbole in der oben gezeigten Regex.
^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$
Dieser Ausdruck setzt sich aus verschiedenen Symbolen, Zeichen oder Token zusammen. Finden wir heraus, was sie bedeuten:
Zeichen | Bedeutung |
^ | Dieses Token markiert den Beginn einer Zeichenkette. |
(…) | Hiermit wird eine Gruppe definiert, in der alles innerhalb von (…) erfasst wird. |
[…] | Die eckigen Klammern [ ] umschließen eine Zeichenauswahl, von der jedes enthaltene Zeichen abgeglichen werden kann. Zum Beispiel entspricht [abc] entweder a, b oder c. |
a-z | Die Menge der Kleinbuchstaben von a bis z. Regex unterscheidet zwischen Groß- und Kleinschreibung. |
A-Z | Die Menge der Großbuchstaben von A bis Z. |
0-9 | Die Ziffern von 0 bis 9. |
_ | Entspricht dem Unterstrich „_“. |
\ | Dies ist das Escape-Zeichen. |
. | Entspricht dem Punkt „.“. Dies ist nötig, da das Symbol „.“ in Regex selbst ein Token ist, das mit jedem Zeichen übereinstimmt. |
+ | Ein Quantifizierer, der ein oder mehrere Vorkommen des vorangegangenen Zeichens angibt. a+ bedeutet zum Beispiel ein oder mehrere ‚a’s. |
– | Entspricht dem Bindestrich „-„. |
@ | Entspricht dem „@“-Zeichen. |
{} | Ein weiterer Quantifizierer, der die genaue Anzahl der Vorkommen eines Zeichens angibt. a{3} bedeutet genau drei ‚a’s. |
$ | Markiert das Ende einer Zeichenkette. |
Analyse des RegEx-Musters
Mit diesem Wissen über Token versuchen wir nun, den regulären Ausdruck zu entschlüsseln:
^([a-zA-Z0-9_-.]+)
bedeutet, dass wir nach einer Zeichenkette suchen, die am Anfang mindestens ein oder mehrere alphanumerische Zeichen (Groß- oder Kleinbuchstaben), Unterstriche, Bindestriche oder Punkte enthält. Beispielsweise würde etwas wie „user_name.01“ diesem Muster entsprechen. Wichtig ist, dass hier nicht alle Zeichen vorkommen müssen, sondern ein beliebiges Zeichen aus der Auswahl [a-zA-Z0-9_-.].- Das @-Zeichen passt genau auf ein einzelnes „@“. Zum vorherigen Beispiel hinzugefügt, würde etwas wie „user_name.01@…“ passen.
([a-zA-Z0-9_-.]+)
ähnelt dem ersten Teil. Hier suchen wir ebenfalls nach einer Zeichenkette, die mindestens ein oder mehrere alphanumerische Zeichen, Unterstriche, Bindestriche oder Punkte enthält. In unserem Beispiel würde das [email protected] ergeben.- Wie Sie vielleicht schon ahnen, geht es hier um das Muster einer E-Mail-Adresse. Weiter geht es mit dem einzelnen „.“-Zeichen. In unserem Beispiel wird daraus [email protected].
([a-zA-Z]{2,5})$
bedeutet, dass die Zeichenkette mit 2 bis 5 Buchstaben (Groß- oder Kleinbuchstaben) enden soll. Wenn wir im vorherigen Beispiel „.com“ hinzufügen, erhalten wir [email protected], was dem typischen Muster einer E-Mail-Adresse entspricht.
Wenn wir alle Punkte zusammenfassen, sehen wir, dass wir nach einer E-Mail-Adresse suchen. Mit diesem Ausdruck können wir jede E-Mail-Adresse validieren. Entspricht die E-Mail-Adresse diesem Muster, können wir sie als gültig betrachten.
PS: Dies ist ein Muster für die gängigsten E-Mail-Adressen im Web.
Token-Arten
Token lassen sich in verschiedenen Kombinationen innerhalb eines regulären Ausdrucks verwenden, um eine Vielzahl von Ausdrücken zu beschreiben. Betrachten wir nun die unterschiedlichen Arten von Token und die am häufigsten verwendeten Token in jeder Kategorie.
Grundlegende Token
Beginnen wir mit den grundlegenden Token. Diese werden in fast jedem regulären Ausdruck verwendet, daher sind sie essenziell.
Zeichen | Bedeutung |
\r | Entspricht dem Wagenrücklaufzeichen. |