Reguläre Ausdrücke in C#: Ein leistungsstarkes Werkzeug für die Textverarbeitung
Reguläre Ausdrücke (regex) sind ein unverzichtbares Werkzeug zum Suchen, Extrahieren und Ersetzen von Textdaten nach einem bestimmten Muster. In C# (.NET) wird die Arbeit mit regulären Ausdrücken über den leistungsstarken Namespace System.Text.RegularExpressions und die Klasse Regex realisiert. In diesem Artikel werden wir die grundlegenden Möglichkeiten regulärer Ausdrücke in C# anhand praktischer Beispiele durchgehen, die Ihnen helfen, die Zeichenkettenverarbeitung zu automatisieren.
Grundlagen der Regex-Klasse in C#
Die Hauptklasse für die Arbeit mit regulären Ausdrücken in C# ist System.Text.RegularExpressions.Regex. Sie stellt statische und Instanzmethoden zur Durchführung von Such-, Ersetzungs- und Teilungsoperationen an Zeichenketten bereit.
Erstellen eines Regex-Objekts
Sie können eine Instanz der Klasse Regex erstellen, indem Sie dem Konstruktor ein Muster (Pattern) und optional Flags übergeben:
using System.Text.RegularExpressions;
// Einfache ErstellungRegex regex = new Regex(@"\\d+");
// Mit Flags (z.B. Groß-/Kleinschreibung ignorieren)Regex regexIgnoreCase = new Regex(@"hello", RegexOptions.IgnoreCase);Wichtig: In C# wird empfohlen, wörtliche Zeichenketten (mit dem Präfix @) zum Schreiben von Mustern zu verwenden. Dadurch müssen Backslashes nicht escaped werden, was den Code lesbarer macht.
Statische Methoden von Regex
Für einmalige Operationen ist es bequemer, statische Methoden zu verwenden, die keine Erstellung einer Instanz der Klasse erfordern:
bool isMatch = Regex.IsMatch("Hallo, Welt!", @"Welt");Console.WriteLine(isMatch); // True
string result = Regex.Replace("123abc456", @"\\d+", "X");Console.WriteLine(result); // XabcXGrundlegende Methoden für die Textverarbeitung
Die Klasse Regex stellt vier Schlüsselmethoden bereit: IsMatch, Match, Matches und Split. Betrachten wir jede davon mit Beispielen.
Methode IsMatch — Prüfung auf Übereinstimmung
Die Methode IsMatch gibt einen bool-Wert zurück, der angibt, ob mindestens eine Übereinstimmung mit dem Muster in der Zeichenkette gefunden wurde.
string email = "user@example.com";string pattern = @"^[\\w\\.-]+@[\\w\\.-]+\\.\\w{2,4}$";
if (Regex.IsMatch(email, pattern)){ Console.WriteLine("Email ist korrekt");}else{ Console.WriteLine("Email ist nicht korrekt");}Dieses Beispiel prüft, ob die Zeichenkette einem einfachen Muster einer E-Mail-Adresse entspricht.
Methoden Match und Matches — Suche nach Übereinstimmungen
Match gibt die erste Übereinstimmung zurück, während Matches eine Sammlung aller Übereinstimmungen als MatchCollection-Objekt zurückgibt.
string text = "Preis: 1500 Rub. Rabatt: 200 Rub. Gesamt: 1300 Rub.";string pattern = @"\\d+";
// Erste ÜbereinstimmungMatch firstMatch = Regex.Match(text, pattern);Console.WriteLine($"Erste Zahl: {firstMatch.Value}"); // 1500
// Alle ÜbereinstimmungenMatchCollection allMatches = Regex.Matches(text, pattern);Console.WriteLine("Alle Zahlen:");foreach (Match match in allMatches){ Console.WriteLine($" - {match.Value}"); // 1500, 200, 1300}Das Objekt Match enthält nicht nur den Wert (Value), sondern auch die Position in der Zeichenkette (Index) und die Länge (Length).
Methode Split — Teilen einer Zeichenkette
Regex.Split teilt eine Zeichenkette in ein Array von Teilzeichenketten basierend auf dem angegebenen Muster. Dies ist ein Analogon zu String.Split, jedoch mit Unterstützung für reguläre Ausdrücke.
string data = "Ivan;25;Moskau;Programmierer";string pattern = @";";
string[] parts = Regex.Split(data, pattern);foreach (string part in parts){ Console.WriteLine(part);}// Ausgabe:// Ivan// 25// Moskau// ProgrammiererGruppierung und Datenerfassung
Eine der leistungsstärksten Möglich