Zuletzt aktualisiert am 16.12.2025 3 Minuten Lesezeit

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

<?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

URL-Erkennung