Wichtige C#-Klassen: Regex

Regex ist eine Klasse in C# für die Bearbeitung und Prüfung sogenannter regulärer Ausdrücke. Die Klasse befindet sich im Namensraum System.Text.RegularExpressions und enthält einige statische Funktionen, welche meistens auch genutzt werden, da eine Objektinstanzierung zumeist nicht notwendig ist. Die einzelnen Zeichenliterale, Quantoren, Gruppierungen usw. werden wir hier nicht erklären, da es ein sehr komplexes Thema ist. Aber natürlich wollen wir Ihnen nicht vorenthalten, wie solche reguläre Ausdrücke in C# eingebaut werden können.
Über die statische Funktion Replace() können wir mit Hilfe eines regulären Ausdrucks als Suchmuster eine Ersetzung durchführen. Dabei ist der erste Parameter die Zeichenkette, die bearbeitet werden soll. Der zweite Parameter stellt das Suchmuster dar und der dritte Parameter gibt die zu ersetzende Zeichenkette an. Die Funktion gibt als Rückgabewert die bearbeitete Zeichenkette zurück.
Mit Hilfe der statischen Funktion IsMatch() können wir prüfen, ob die im ersten Parameter übergebene Zeichenkette der Bedingung des regulären Ausdrucks (zweiter Parameter) zutrifft.
Bei regulären Ausdrücken kommen oft Backslashes vor. Da bei Zeichenketten Backslashes escapt (auch maskiert genannt) werden müssen (mit Hilfe eines doppelten Backslashes), ist dies bei regulären Ausdrücken oft unübersichtlich. Um diesem Problem entgegenzugehen, können wir vor der Zeichenkette ein at-Zeichen (Klammeraffe) notieren. Dadurch werden die Backslashes automatisch escapt. Dieser Vorteil wird auch oft bei Pfadangaben verwendet. Natürlich ist die Funktion des at-Zeichens nicht immer von Vorteil, da man dann keine Zeichenkette mehr erstellen kann, welche doppelte Anführungszeichen als Text enthalten. Deshalb wird der Klammeraffe meist nur bei Pfadangaben und regulären Ausdrücken verwendet.

Program.cs

// Info: durch das @-Zeichen vor einer Zeichenkette ist es nicht notwendig einen Schrägstrich zu "escapen" (also statt \\ -> \)
Console.WriteLine(Regex.Replace("Hallo Welt  vom C#-Buch Version    2.0 vom   Jahr  2015!", @"\s+", " "));

Console.WriteLine();

Console.Write("Bitte geben Sie eine IP-Adresse ein: ");
if (Regex.IsMatch(Console.ReadLine(), @"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9])$"))
	Console.WriteLine("Die eingegebene IP-Adresse ist gültig!");
else
	Console.WriteLine("Ihre Eingabe entspricht keiner gültigen IP-Adresse.");

Console.ReadKey();
Download

LinksRechts