C# - Reguläre Ausdrücke: Ein Anfängerleitfaden

Hallo da drüben, zukünftiger Codingsuperstar! ? Bist du bereit, eine aufregende Reise in die Welt der Regulären Ausdrücke (RegEx) in C# anzutreten? Mach dir keine Sorgen, wenn du vorher noch nie eine Zeile Code geschrieben hast - ich bin hier, um dich Schritt für Schritt durch dieses Abenteuer zu führen. Lass uns eintauchen!

C# - Regular Expressions

Was sind Reguläre Ausdrücke?

Bevor wir uns den Details widmen, lassen wir uns anschauen, was Reguläre Ausdrücke sind. Stell dir vor, du bist eine Detektivin ?️‍♀️ und suchst nach einem bestimmten Muster in einem Meer von Text. Reguläre Ausdrücke sind deine Lupe, die dir helfen, Text basierend auf Mustern zu durchsuchen, zu.matchen und zu manipulieren. Cool, oder?

Bausteine zur Definition von Regulären Ausdrücken

Nun schauen wir uns einige der grundlegenden Bausteine an, die wir verwenden, um diese mächtigen Muster zu erstellen. Denke daran, dass diese wie die LEGO-Steine unserer RegEx-Welt sind!

Baustein Beschreibung Beispiel
. Passt auf jedes einzelne Zeichen außer Zeilenumbruch a.c passt auf "abc", "a1c", "a@c", etc.
* Passt auf null oder mehr Vorkommen des vorherigen Zeichens ab*c passt auf "ac", "abc", "abbc", "abbbc", etc.
+ Passt auf ein oder mehr Vorkommen des vorherigen Zeichens ab+c passt auf "abc", "abbc", "abbbc", aber nicht "ac"
? Macht das vorherige Zeichen optional colou?r passt auf "color" und "colour"
^ Passt auf den Anfang einer Zeile ^Hello passt auf "Hello World" aber nicht "Say Hello"
$ Passt auf das Ende einer Zeile World$ passt auf "Hello World" aber nicht "World Cup"
[ ] Passt auf jedes einzelne Zeichen aus einem Satz [aeiou] passt auf jedes Vokalzeichen
[^ ] Passt auf jedes einzelne Zeichen, das nicht in einem Satz ist [^aeiou] passt auf jedes Konsonantenzeichen
( ) Gruppiert Zeichen zusammen (ab)+ passt auf "ab", "abab", "ababab", etc.

Mach dir keine Sorgen, wenn das überwältigend erscheint - wir werden diese很快 in der Praxis sehen!

Die Regex-Klasse

In C# verwenden wir die Regex-Klasse, um mit Regulären Ausdrücken zu arbeiten. Es ist wie unser Schweizer Army knife ? für Mustererkennung. Lassen wir uns anschauen, wie man es verwendet!

Beispiel 1: Einfaches Muster finden

Lassen Sie mit etwas Einfachem beginnen. Stell dir vor, du baust ein Programm, um zu überprüfen, ob eine E-Mail-Adresse gültig ist.

using System;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
string email = "[email protected]";
string pattern = @"@.*\.";

Regex regex = new Regex(pattern);
Match match = regex.Match(email);

if (match.Success)
{
Console.WriteLine("Gültige E-Mail-Adresse!");
}
else
{
Console.WriteLine("Ungültige E-Mail-Adresse!");
}
}
}

In diesem Beispiel:

  • Wir erstellen ein Regex-Objekt mit unserem Muster @"@.*\.".
  • Dieses Muster sucht nach einem @-Symbol, gefolgt von任意字符 (.*), und dann einen Punkt (\.).

Wir verwenden die Match-Methode, um dieses Muster in unserer E-Mail-Adresse zu finden.

  • Wenn es erfolgreich ist, betrachten wir die E-Mail als gültig.

Denke daran, dass dies ein sehr einfacher Check ist. Die tatsächliche E-Mail-Validierung ist viel komplexer!

Beispiel 2: Text ersetzen

Nun, stellen wir uns vor, du baust eine Chat-App, und du möchtest alle Vorkommen von "LOL" durch "lach aus laut" ersetzen. RegEx zur Rettung!

using System;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
string input = "OMG! Hast du das gesehen? LOL! Ich kann es nicht glauben. LOL";
string pattern = @"\bLOL\b";
string replacement = "lach aus laut";

string result = Regex.Replace(input, pattern, replacement);

Console.WriteLine(result);
}
}

Hier ist, was passiert:

  • Wir verwenden \b, um Wortgrenzen zu matchen. Dies stellt sicher, dass wir nur "LOL" ersetzen, wenn es ein Ganzes Wort ist, nicht Teil eines anderen Wortes.
  • Regex.Replace zaubert die Magie, indem es alle Matchesfindet und ersetzt.

Ausgabe: "OMG! Hast du das gesehen? lach aus laut! Ich kann es nicht glauben. lach aus laut"

Beispiel 3: Informationen extrahieren

Last but not least, extrahieren wir alle Hashtags aus einem Tweet. Dies ist etwas, das du machen könntest, wenn du eine Funktion für aktuelle Themen für eine Social-Media-App baust.

using System;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
string tweet = " gerade mein #CSharp-Kurs abgeschlossen! #Coding #LernenZuCode";
string pattern = @"#\w+";

MatchCollection matches = Regex.Matches(tweet, pattern);

Console.WriteLine("Gefundene Hashtags:");
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
}
}

Lassen Sie es auseinanderbrechen:

  • Unser Muster #\w+ sucht nach einem # gefolgt von einem oder mehreren Wortzeichen.
  • Regex.Matchesfindet alle Vorkommen des Musters in unserer Zeichenkette.
  • Wir durchlaufen dann die Matches und drucken jeden Hashtag.

Ausgabe:

Gefundene Hashtags:
#CSharp
#Coding
#LernenZuCode

Abschluss

Glückwunsch! ? Du hast deine ersten Schritte in die Welt der Regulären Ausdrücke in C# gemacht. Wir haben die Grundlagen behandelt, von einfacher Mustererkennung bis hin zum Ersetzen von Text und dem Extrahieren von Informationen. Denke daran, RegEx ist ein mächtiges Werkzeug, aber wie jede Superkraft, erfordert es Übung, um es zu meistern.

Lass dich nicht entmutigen, wenn es am Anfang schwierig erscheint. Ich erinnere mich, als ich zum ersten Mal RegEx unterrichtete, hatte ich einen Schüler, der so verwirrt war, er sagte, es sah aus, als hätte eine Katze über seiner Tastatur gelaufen! Aber mit Übung wurde er ein RegEx-Zauberer. Du kannst das auch!

Weiterspielen, versuche verschiedene Muster aus, und bald wirst du wie ein Profi in Heuhaufen Nadeln finden. Frohes Coden! ??

Credits: Image by storyset