Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erfassen und greifen reguläre Ausdrucksgruppen in C# übereinstimmende Teilzeichenfolgen zu?

Wie erfassen und greifen reguläre Ausdrucksgruppen in C# übereinstimmende Teilzeichenfolgen zu?

DDD
DDDOriginal
2024-10-29 18:48:57981Durchsuche

How do Regular Expression Groups in C# Capture and Access Matched Substrings?

Reguläre Ausdrucksgruppen in C#: Übereinstimmungsergebnisse verstehen

Betrachten Sie den folgenden C#-Codeblock:

<code class="csharp">var pattern = @"\[(.*?)\]";
var matches = Regex.Matches(user, pattern);
if (matches.Count > 0 && matches[0].Groups.Count > 1)
    ...</code>

Dies Code verwendet einen regulären Ausdruck, um in Klammern gesetzten Text aus einer Benutzereingabezeichenfolge zu extrahieren. Für die Eingabe „Josh Smith [jsmith]“ gibt der Code korrekt die folgenden Ergebnisse zurück:

matches.Count == 1
matches[0].Value == "[jsmith]"

Die folgenden Zeilen werfen jedoch Fragen auf:

matches[0].Groups.Count == 2
matches[0].Groups[0].Value == "[jsmith]"
matches[0].Groups[1].Value == "jsmith"

Match Grouping

In regulären Ausdrücken werden Gruppen verwendet, um bestimmte Teile einer Übereinstimmung zu erfassen. Standardmäßig wird die gesamte Übereinstimmung in Gruppe 0 erfasst. Zusätzliche Erfassungsgruppen können mithilfe von Klammern definiert werden.

Im bereitgestellten Code definiert der reguläre Ausdruck eine einzelne Erfassungsgruppe, gekennzeichnet durch (.*?). Diese Gruppe erfasst den Text innerhalb der eckigen Klammern (in diesem Fall jsmith). Somit:

  • matches[0].Groups[0] enthält die gesamte Übereinstimmung, einschließlich der eckigen Klammern: [jsmith]
  • matches[0].Groups[1] enthält die erfasster Text in den Klammern: jsmith

Verschachtelte Gruppen

In komplexeren regulären Ausdrücken ist es möglich, verschachtelte Gruppen zu haben. In diesen Fällen enthält jede Gruppe ihren eigenen Satz von Erfassungen. Allerdings gibt es im angegebenen Code nur eine Gruppierungsebene, also:

  • matches[0].Groups[1].Captures ist immer leer.

Zusätzliche Überlegungen

  • Gruppe 0: Es ist wichtig zu beachten, dass Gruppe 0 immer die gesamte Übereinstimmung enthält, unabhängig davon, ob Erfassungsgruppen definiert sind.
  • Anzahl der Gruppen: Die Anzahl der Gruppen in einer Übereinstimmung mit regulären Ausdrücken hängt von der Anzahl der im Muster definierten Erfassungsgruppen ab. Im bereitgestellten Beispiel gibt es nur eine Erfassungsgruppe, was insgesamt zwei Gruppen ergibt.

Das obige ist der detaillierte Inhalt vonWie erfassen und greifen reguläre Ausdrucksgruppen in C# übereinstimmende Teilzeichenfolgen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn