Einführung:
Reguläre Ausdrücke spielen eine wichtige Rolle in verschiedenen Programmieranwendungen, einschließlich Datenextraktion und Textmanipulation. Um ihr volles Potenzial in C# auszuschöpfen, ist es wichtig zu verstehen, wie reguläre Ausdrucksgruppen verwendet werden.
Das Problem verstehen:
Ein Entwickler hat einen Codeblock geerbt, der den Abgleich regulärer Ausdrücke durchführt, und ist ratlos anhand der für das Regex-Muster erhaltenen Ergebnisse:
var pattern = @"\[(.*?)\]";
Für die Benutzereingabe „Josh Smith [jsmith]“ scheinen die Ergebnisse eindeutig zu sein:
matches[0].Value == "[jsmith]"
Der Entwickler ist jedoch verwirrt durch das zusätzliche Ergebnis:
matches[0].Groups[1].Value == "jsmith"
Beantwortung der Fragen:
1. Warum stimmt „jsmith“ mit „matches[0].Groups[1].Value“ überein?
Das reguläre Ausdrucksmuster enthält eine einzelne einfangende Gruppe, dargestellt durch (.*?). Diese Erfassungsgruppe gleicht alle Zeichen zwischen den öffnenden und schließenden eckigen Klammern ab. In diesem Fall wird „jsmith“ erfasst.
2. Wie viele Gruppen werden bei Übereinstimmungen[0].Groups immer gespeichert?
In der Groups-Sammlung werden normalerweise zwei Gruppen gespeichert: die gesamte Übereinstimmung und die letzte Übereinstimmung. Die Anzahl der Gruppen kann jedoch je nach den im regulären Ausdrucksmuster angegebenen Erfassungsgruppen variieren.
Zusätzliche Erläuterungen:
Beispiel:
Betrachten Sie ein komplexeres Muster:
var pattern = @"\[(.*?)\](.*)";
Für die Eingabe „ignored [john] John Johnson“:
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „matches[0].Value' und „matches[0].Groups[1].Value' in regulären C#-Ausdrücken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!