Reguläre Ausdrücke (regular expression)
Allgemein
Ein regulärer Ausdruck (englisch regular expression, Abkürzung RegExp oder Regex) ist in der theoretischen Informatik eine Zeichenkette, die der Beschreibung von Mengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dient.
Unterstützung in verschiedenen
- Programmiersprachen
- Texteditoren (Suchen & Ersetzen)
🡲 ermöglicht ein definiertes Muster innerhalb eines Texts zu suchen (sog. Pattern Matching)
Syntax
Grundlegender Aufbau (abhängig von Programmiersprache, mit kleinen Unterschieden):
/regex/options
Beispiel in PHP:
$text = "Ein kurzer Text.";
$pattern = "/ein/i";
echo preg_match($pattern, $text);
preg_match(), preg_match_all(), preg_replace(), ...
Beispiel in JavaScript:
let pattern = /[a-z]{3}/gm
let text = "123 abc ABC xyzzz"
let match = text.match(pattern)
console.log(match)
Regex
Regex im Detail: Mustererkennung mit Regular Expressions (RegEx) 19.05.2023
Literale Zeichen:
Normale Zeichen als einfache Muster
z.B.: hello würde nach dem Wort "hello" suchen
Metazeichen:
.: steht für jedes einzelne Zeichen außer einer neuen Zeile^: beginnt mit dem Muster am Anfang der Zeile$: endet mit dem Muster am Ende der Zeile[]: definiert eine Zeichenklasse, z.B.[a-z]für alle Kleinbuchstaben|: oder-Operator, z.B.cat|dogwürde nach "cat" oder "dog" suchen
Quantifizierer:
*: null oder mehr Vorkommen des vorherigen Musters+: ein oder mehr Vorkommen des vorherigen Musters?: null oder ein Vorkommen des vorherigen Musters{n}: genau n Vorkommen des vorherigen Musters{n,}: mindestens n Vorkommen des vorherigen Musters{n,m}: mindestens n und maximal m Vorkommen des vorherigen Musters
Gruppierung:
(): gruppiert Muster zusammen, z.B.(ab)+würde nach "ab", "abab", "ababab" usw. suchen
Escape-Zeichen:
\: um Sonderzeichen zu escapen, z.B.\.sucht nach einem Punkt statt nach einem beliebigen Zeichen
...
Options (pattern modifiers)
g: global matchi: case-insensitivem: multi-line mode ...^und$um auch Zeilen-Beginn und Ende zu matchens: single-line mod ....um alles zu matchen, inklusive Zeilenumbrüche
Webseiten / Online Tools
regex101: build, test, and debug regex
RegExr: Learn, Build, & Test RegEx
Regex Generator - Creating regex is easy again!
...
Übungen
📋 E-Mail-Adresse filtern
Extrahiere alle E-Mail-Adressen aus einem Text. Überlege - Wie sieht der Aufbau einer allgemein gültigen E-Mail-Adresse aus?
Kontaktiere mich unter test@example.com oder info@beispiel.de"
📋 Datum filtern
Extrahiere alle Vorkommen von Datumsangaben im Format DD.MM.YYYY aus dem Text.
Der Termin ist für den 31.12.2024 geplant und das Event beginnt am 01.01.2025.
Im englischsprachigen Raum wäre es das Datum 2024/12/31 und 2025/01/01.
📋 Großbuchstaben entfernen
Entferne alle Großbuchstaben aus dem Text.
Dieser Text Enthält GroßBuchstaben.
📋 Wortanfänge markieren
Füge vor jedem Wortanfang im Text das Symbol # ein.
Dies ist ein Beispieltext.
📋 Telefonnummern formatieren
Ersetze alle Telefonnummern im Format (123) 456-7890 durch 123-456-7890.
Meine Nummer ist (123) 456-7890 und die Büronummer ist (987) 654-3210.