Wie man ausgewählten Text mit Regex in C# abruft

Wenn Sie mit Zeichenfolgen in C# arbeiten, können Sie auf Situationen stoßen, in denen Sie spezifische Informationen basierend auf Mustern extrahieren müssen. Ein häufiges Problem besteht darin, die Regex-Funktionalität von Sprachen wie Perl nach C# zu übersetzen. Dieser Blogbeitrag konzentriert sich darauf, wie Sie mithilfe von Regex in C# ausgewählten Text abrufen können und bietet Ihnen einfache und klare Lösungen.

Das Problem erklärt

Angenommen, Sie haben eine Zeichenfolge, die ein Muster enthält, das Sie extrahieren möchten. Wenn Sie beispielsweise eine Zeichenfolge haben, die wie “Index: 25” aussieht, und Sie die Zahl “25” als Ganzzahl abrufen möchten, würden Sie typischerweise Regex verwenden, um das Muster zu finden. In Perl könnte dies mit folgendem Code erreicht werden:

$indexVal = 0;
if($string =~ /Index: (\d*)/){$indexVal = $1;}

In dem Beispiel durchsucht das Regex-Muster /Index: (\d*)/ die Teilzeichenfolge “Index: " gefolgt von Ziffern und erfasst die Ziffern für eine spätere Verwendung. Aber wie können wir dieselbe Funktionalität in C# erreichen?

Die Lösung in C#

Lassen Sie uns nun aufschlüsseln, wie man die gleiche Funktionalität in C# implementiert. Nachfolgend sind die Schritte aufgeführt, um ein äquivalentes Stück Code in C# zu schreiben, das die Zahl nach “Index: " extrahiert.

Schritt 1: Importieren Sie den erforderlichen Namensraum

Zuerst sollten Sie sicherstellen, dass Sie den Namensraum System.Text.RegularExpressions importieren, der die Regex-Klasse bereitstellt, die Sie für Regex-Operationen benötigen.

using System.Text.RegularExpressions;

Schritt 2: Definieren Sie Ihr Regex-Muster

Erstellen Sie ein Regex-Objekt mit demselben Muster, das Sie in Perl verwendet haben:

Regex re = new Regex(@"Index: (\d*)");

Schritt 3: Vergleichen Sie das Muster mit Ihrer Zeichenfolge

Als Nächstes möchten Sie das Regex mit Ihrer Eingabezeichenfolge abgleichen:

Match m = re.Match(s); // 's' ist Ihre Eingabezeichenfolge

Schritt 4: Extrahieren Sie den übereinstimmenden Wert

Jetzt können Sie überprüfen, ob eine Übereinstimmung gefunden wurde, und die erfasste Gruppe extrahieren, ähnlich wie Sie es in Perl getan haben:

int indexVal = 0; // Standardwert
if(m.Success)
{
    // Die erfasste Gruppe befindet sich an Index 1
    int.TryParse(m.Groups[1].Value, out indexVal); // out-Parameter zur Sicherheit
}

Vollständiges C#-Codebeispiel

So könnte der vollständige Code in einem C#-Kontext aussehen:

using System;
using System.Text.RegularExpressions;

public class Program
{
    public static void Main()
    {
        string s = "Index: 25"; // Beispiel für eine Eingabezeichenfolge
        int indexVal = 0;
        Regex re = new Regex(@"Index: (\d*)");
        Match m = re.Match(s);

        if(m.Success)
        {
            int.TryParse(m.Groups[1].Value, out indexVal);
        }

        Console.WriteLine("Extrahierter Indexwert: " + indexVal);
    }
}

Fazit

Das Abrufen von ausgewähltem Text mit Regex in C# ist unkompliziert, sobald Sie die Umwandlung aus anderen Programmiersprachen wie Perl verstehen. Indem Sie die oben skizzierten Schritte befolgen, können Sie die benötigten Informationen aus einer Zeichenfolge mit Zuversicht extrahieren.

Wichtiger Hinweis

  • Das Verständnis von Regex-Mustern ist entscheidend für eine effektive Textextraktion in C#. Sobald Sie es beherrschen, werden Sie ähnliche Funktionalitäten in verschiedenen Programmiersprachen finden.

Fühlen Sie sich frei, mit verschiedenen Mustern zu experimentieren und die Möglichkeiten der Regex-Klasse in C# zu erkunden. Viel Spaß beim Programmieren!