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: in der Praxis



Reguläre Ausdrücke (Regex) sind ein leistungsstarkes Werkzeug zum Suchen, Überprüfen und Ersetzen von Text nach einem Muster. In C# (.NET) wird die Arbeit mit ihnen über die Klasse System.Text.RegularExpressions.Regex realisiert. In diesem Artikel analysieren wir die grundlegenden Möglichkeiten anhand realer Beispiele: von der einfachen E-Mail-Überprüfung bis zur Datenextraktion aus HTML. Alle Beispiele sind bereit zum Kopieren und Verwenden in Ihren Projekten.



Grundlagen der Arbeit mit Regex in C#



Die Klasse Regex bietet drei Schlüsselmethoden:

  • IsMatch — prüft, ob die Zeichenfolge dem Muster entspricht;
  • Match — findet die erste Übereinstimmung;
  • Matches — findet alle Übereinstimmungen.


Ein einfaches Beispiel — prüfen, ob die Zeichenfolge Ziffern enthält:



using System;using System.Text.RegularExpressions;

public class RegexExample{ public static void Main() { string text = "Meine Nummer: 12345"; string pattern = @"\\d+"; // eine oder mehr Ziffern

bool hasDigits = Regex.IsMatch(text, pattern); Console.WriteLine(hasDigits); // True }}


Beachten Sie das @ vor der Zeichenfolge — dies ist ein verbatim string literal, das die Maskierung des umgekehrten Schrägstrichs deaktiviert. Ohne dieses müsste man "\\\\d+" schreiben.



E-Mail- und Telefonnummern-Überprüfung



E-Mail-Validierung

Die E-Mail-Überprüfung ist eine klassische Aufgabe. Ein einfaches, aber funktionierendes Muster:



public static bool IsValidEmail(string email){    string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";    return Regex.IsMatch(email, pattern);}

// VerwendungConsole.WriteLine(IsValidEmail("user@example.com")); // TrueConsole.WriteLine(IsValidEmail("user@.com")); // False


Lassen Sie uns das Muster analysieren:

  • ^ — Anfang der Zeichenfolge;
  • [a-zA-Z0-9._%+-]+ — lokaler Teil (Buchstaben, Ziffern und Sonderzeichen);
  • @ — das @-Zeichen;
  • [a-zA-Z0-9.-]+ — Domain;
  • \\. — Punkt (maskiert);
  • [a-zA-Z]{2,} — Domain-Endung (mindestens 2 Buchstaben);
  • $ — Ende der Zeichenfolge.


Telefonnummern-Überprüfung

Beispiel für das russische Format (+7 XXX XXX-XX-XX):



public static bool IsValidRussianPhone(string phone){    string pattern = @"^\\+7\\d{3}\\d{3}-\\d{2}-\\d{2}$";    // Oder flexiblere Variante:    // @"^\\+7[\\s-]?\\d{3}[\\s-]?\\d{3}[\\s-]?\\d{2}[\\s-]?\\d{2}$"    return Regex.IsMatch(phone, pattern);}


Datenextraktion aus Text mit Erfassungsgruppen



Erfassungsgruppen (Klammern ()) ermöglichen das Extrahieren von Teilen der Übereinstimmung. Zum Beispiel extrahieren wir alle E-Mails aus einem Text:



string text = "Kontakte: support@site.com, admin@test.org, info@company.net";string pattern = @"([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+)\\.([a-zA-Z]{2,})";

MatchCollection matches = Regex.Matches(text, pattern);foreach (Match match in matches){ Console.WriteLine($"Vollständige E-Mail: {match.Value}"); Console.WriteLine($"Lokaler Teil: {match.Groups[1].Value}"); Console.WriteLine($"Domain: {match.Groups[2].Value}"); Console.WriteLine($"Endung: {match.Groups[3].Value}"); Console.WriteLine("---");}


Ergebnis:

Vollständige E-Mail: support@site.comLokaler Teil: supportDomain: siteEndung: com---


Gruppen werden ab 1 nummeriert (Gruppe 0 ist die gesamte Übereinstimmung). Man kann ihnen Namen geben:



string pattern = @"(?<user>[a-zA-Z0-9._%+-]+)@(?<domain>[a-zA-Z0-9.-]+)\\.(?<tld>[a-zA-Z]{2,})";// Zugriff: match.Groups["user"].Value


Extraktion von Links aus HTML



string html = @"<a href='https://example.com'>Beisp                

Blogs

Buchempfehlungen