Reguläre Ausdrücke in C# mit Beispielen: in der Praxis

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Reguläre Ausdrücke in C# mit Beispielen: von der Theorie zur Praxis

\n\n

Reguläre Ausdrücke (Regex) sind ein mächtiges Werkzeug zum Suchen, Extrahieren und Ersetzen von Text nach einem Muster. In C# (.NET) wird die Arbeit mit regulären Ausdrücken über den Namensraum System.Text.RegularExpressions und die Klasse Regex realisiert. In diesem Artikel werden wir die wichtigsten Möglichkeiten anhand realer Beispiele durchgehen: von der einfachen Suche bis zur Validierung von E-Mail und Telefon.

\n\n

1. Grundlagen: die Regex-Klasse und ihre Methoden

\n\n

Die Hauptklasse für die Arbeit ist Regex. Sie bietet statische und Instanzmethoden. Hier sind die wichtigsten:

\n\n
    \n
  • IsMatch — prüft, ob die Zeichenfolge eine Übereinstimmung mit dem Muster enthält.
  • \n
  • Match — findet die erste Übereinstimmung.
  • \n
  • Matches — findet alle Übereinstimmungen.
  • \n
  • Replace — ersetzt Übereinstimmungen durch die angegebene Zeichenfolge.
  • \n
  • Split — teilt die Zeichenfolge nach dem Muster auf.
  • \n
\n\n

Beispiel 1. Einfache Prüfung

\n
using System;\nusing System.Text.RegularExpressions;\n\nclass Program\n{\n    static void Main()\n    {\n        string text = "Hallo, meine Nummer: 123-456-7890";\n        string pattern = @"\\d{3}-\\d{3}-\\d{4}";\n\n        if (Regex.IsMatch(text, pattern))\n        {\n            Console.WriteLine("Nummer gefunden!");\n        }\n    }\n}\n
\n\n

In diesem Beispiel bedeutet \\d{3} „genau drei Ziffern“. Der Backslash wird mit @ (Verbatim-Zeichenfolge) maskiert.

\n\n

2. Erfassungsgruppen und Datenextraktion

\n\n

Erfassungsgruppen ermöglichen das Extrahieren von Teilen der Übereinstimmung. Sie werden mit runden Klammern () definiert. Jede Gruppe erhält eine fortlaufende Nummer (beginnend mit 1).

\n\n

Beispiel 2. Extrahieren von Name und Domain aus einer E-Mail

\n
string email = "user@example.com";\nstring pattern = @"^(\\w+)@(\\w+\\.\\w+)$";\n\nMatch match = Regex.Match(email, pattern);\n\nif (match.Success)\n{\n    Console.WriteLine($"Login: {match.Groups[1].Value}");   // user\n    Console.WriteLine($"Domain: {match.Groups[2].Value}");   // example.com\n}\n
\n\n

Hier erfasst (\\w+) ein oder mehr alphanumerische Zeichen. ^ und $ sind die Anker für Zeilenanfang und -ende.

\n\n

Beispiel 3. URL-Analyse

\n
string url = "https://pythonlib.ru/page?id=42";\nstring pattern = @"^(https?)://([^/]+)(/.*)?$";\n\nMatch m = Regex.Match(url, pattern);\nif (m.Success)\n{\n    Console.WriteLine($"Protokoll: {m.Groups[1].Value}"); // https\n    Console.WriteLine($"Domain: {m.Groups[2].Value}");    // pythonlib.ru\n    Console.WriteLine($"Pfad: {m.Groups[3].Value}");     // /page?id=42\n}\n
\n\n

3. Ersetzen und Löschen von Text

\n\n

Die Methode Replace ermöglicht das Ersetzen gefundener Textteile. Man kann Rückverweise wie $1, $2 zum Einfügen von Gruppen verwenden.

\n\n

Beispiel 4. Formatierung einer Telefonnummer

\n
string raw = "89161234567";\nstring pattern = @"(\\d{1})(\\d{3})(\\d{3})(\\d{2})(\\d{2})";\nstring replacement = "+7 ($2) $3-$4-$5";\n\nstring formatted = Regex.Replace(raw, pattern, replacement);\nConsole.WriteLine(formatted); // +7 (916) 123-45-67\n
\n\n

Beispiel 5. Entfernen überflüssiger Leerzeichen

\n
string text = "Dies    ist   ein   Text   mit   überflüssigen   Leerzeichen.";\nstring cleaned = Regex.Replace(text, @"\\s+", " ");\nConsole.WriteLine(cleaned); // "Dies ist ein Text mit überflüssigen Leerzeichen."\n
\n\n

\\s+ — ein oder mehr Leerzeichen. Ersetzen durch ein einzelnes Leerzeichen.

\n\n

4. Reale Anwendungsfälle: Validierung von E-Mail und Telefon

\n\n

In der Praxis werden reguläre Ausdrücke am häufigsten zur Überprüfung von Benutzereingaben verwendet. Hier sind zwei typische Beispiele.

\n\n

E-Mail-Prüfung (vereinfacht)

\n
public static bool IsValidEmail(string email)\n{\n    if (string.IsNullOrWhiteSpace(email))\n        return false;\                

Blogs

Buchempfehlungen