Regex
Regex (Regular Expression, deutsch: regulärer Ausdruck) ist eine spezialisierte Syntax zur Beschreibung von Suchmustern in Zeichenketten. Mit Regex kannst du komplexe Textmuster definieren, um Strings zu durchsuchen, zu validieren oder zu manipulieren. Regex ist ein universelles Werkzeug, das in praktisch allen modernen Programmiersprachen und vielen Texteditoren verfügbar ist.
Geschichte und Entwicklung
https?:\/\/[\w.-]+(?:\.[a-z]{2,})+(?:[\/\w.-]*)*\/?(?:\?[\w=&-]*)?(?:#[\w-]*)?
Erkennt URLs mit:
- HTTP oder HTTPS Protokoll
- Domain mit Subdomains
- Optionaler Pfad
- Optionale Query-Parameter
- Optionaler Anker
Datum im deutschen Format
^(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[0-2])\.(19|20)\d{2}$
Validiert Datumsangaben wie "06.12.2025" mit:
- Tag: 01-31 (vereinfacht)
- Monat: 01-12
- Jahr: 1900-2099
Performance und Best Practices
Bei der Arbeit mit Regex gibt es einige wichtige Aspekte zu beachten:
Gieriges vs. Faulen Matching
Standardmäßig sind Quantifizierer gierig (greedy) - sie versuchen, so viele Zeichen wie möglich zu erfassen:
# Gierig: <.*> auf "<div>Text</div>" erfasst alles
<.*> -> "<div>Text</div>"
# Faul (mit ?): Erfasst so wenig wie möglich
<.*?> -> "<div>" (nur das erste Tag)
Katastrophales Backtracking vermeiden
Verschachtelte Quantifizierer können zu exponentieller Laufzeit führen:
# SCHLECHT: Kann extrem langsam werden
(a+)+b
# BESSER: Flache Struktur
a+b
Weitere Best Practices
- Anker verwenden: Mit
^und$wird nur am Anfang/Ende gesucht - Spezifische Zeichenklassen:
[a-z0-9]statt.wenn möglich - Pattern kompilieren: Bei mehrfacher Verwendung vorher kompilieren
- Kommentare nutzen: Mit dem
x-Flag kannst du Patterns lesbar formatieren - Online-Tools testen: Nutze regex101.com zum Debuggen
Häufige Fehler
| Fehler | Problem | Lösung |
|---|---|---|
| Sonderzeichen nicht escapen | 1+1=2 interpretiert + als Quantifizierer |
1\+1=2 |
| Punkt als Wildcard | file.txt findet auch fileXtxt |
file\.txt |
| Fehlende Anker | Pattern matched überall im String | ^pattern$ für exaktes Match |
| Case-Sensitivity vergessen | /hello/ findet nicht "Hello" |
/hello/i (i-Flag) |
| Gieriges Matching | <.*> erfasst zu viel |
<.*?> (faules Matching) |
Regex in der IT-Praxis
Regular Expressions sind in vielen Bereichen der IT unverzichtbar:
- Formularvalidierung: E-Mails, Telefonnummern, Postleitzahlen prüfen
- Log-Analyse: Fehlermeldungen und Muster in Logdateien finden
- Datenbereinigung: Unerwünschte Zeichen entfernen, Formate vereinheitlichen
- Code-Refactoring: Variablen umbenennen, Patterns ersetzen
- Web Scraping: Daten aus HTML-Seiten extrahieren
- Sicherheit: Input-Validierung gegen SQL-Injection und XSS
Als angehender Fachinformatiker für Anwendungsentwicklung wirst du Regex regelmäßig in der Backend- und Frontend-Entwicklung einsetzen. Auch für Fachinformatiker für Systemintegration sind Regex wichtig, etwa für die Analyse von Systemlogs oder die Konfiguration von Filterfunktionen.
Nützliche Tools
- regex101.com - Interaktiver Regex-Tester mit Erklärungen
- RegExr - Visueller Regex-Editor mit Bibliothek
- Debuggex - Visualisiert Regex als Zustandsdiagramm
Quellen und weiterführende Links
- Regular-Expressions.info - Umfassende Regex-Referenz
- Python re Dokumentation - Offizielle Python-Regex-Docs
- MDN Regular Expressions - JavaScript Regex Guide
- RexEgg - Fortgeschrittene Regex-Techniken
<?php
$text = "Kontakt: info@firma.de";
$pattern = '/\w+@\w+\.\w+/';
// Einzelner Treffer
if (preg_match($pattern, $text, $matches)) {
echo "Gefunden: " . $matches[0];
}
// Ersetzen
$result = preg_replace('/\d+/', '***', "Tel: 12345");
echo $result; // Tel: ***
// Case-insensitive mit i-Flag
$pattern = '/hello/i';
?>
Praktische Anwendungsbeispiele
E-Mail-Validierung
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Dieses Pattern prüft:
- Lokaler Teil: Buchstaben, Ziffern und bestimmte Sonderzeichen
- @-Symbol
- Domain: Buchstaben, Ziffern, Punkte und Bindestriche
- TLD: Mindestens 2 Buchstaben
Passwort-Validierung
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W).{8,16}$
Prüft auf:
- Mindestens eine Ziffer
(?=.*[0-9]) - Mindestens ein Kleinbuchstabe
(?=.*[a-z]) - Mindestens ein Großbuchstabe
(?=.*[A-Z]) - Mindestens ein Sonderzeichen
(?=.*\W) - Länge zwischen 8 und 16 Zeichen