Heim > Backend-Entwicklung > C++ > Wie extrahiere ich mithilfe regulärer Ausdrucksgruppen in C# bestimmte Informationen aus einer Textzeichenfolge?

Wie extrahiere ich mithilfe regulärer Ausdrucksgruppen in C# bestimmte Informationen aus einer Textzeichenfolge?

Susan Sarandon
Freigeben: 2024-10-30 19:28:30
Original
519 Leute haben es durchsucht

How do I extract specific information from a text string using regular expression groups in C#?

Reguläre Ausdrucksgruppen in C#

In C# stellen reguläre Ausdrücke leistungsstarke Werkzeuge für die Textverarbeitung bereit. Um spezifische Informationen zu extrahieren, ist es wichtig zu verstehen, wie Gruppen innerhalb dieser Ausdrücke funktionieren. Lassen Sie uns untersuchen, wie reguläre Ausdrucksgruppen verwendet werden, und ihr Verhalten in einem bestimmten Szenario entschlüsseln.

Betrachten Sie den folgenden regulären Ausdruck und eine Beispieleingabezeichenfolge:

var pattern = @"\[(.*?)\]";
var user = "Josh Smith [jsmith]";
Nach dem Login kopieren

Der Ausdruck [(.*? )] stimmt mit einem Text überein, der mit einer öffnenden eckigen Klammer beginnt, gefolgt von einem nicht gierigen Abgleich eines beliebigen Zeichens in den eckigen Klammern und endet mit einer schließenden eckigen Klammer.

Wenn Sie Regex.Matches mit der obigen Eingabe verwenden, Wir erhalten die folgenden Ergebnisse:

matches.Count == 1
matches[0].Value == "[jsmith]"
Nach dem Login kopieren

Dies ist sinnvoll, da der reguläre Ausdruck mit der Teilzeichenfolge „[jsmith]“ übereinstimmt. Es lohnt sich jedoch, in die Groups-Sammlung einzutauchen:

matches[0].Groups.Count == 2
matches[0].Groups[0].Value == "[jsmith]"
matches[0].Groups[1].Value == "jsmith"
Nach dem Login kopieren

Hier repräsentiert Groups[0] das gesamte Spiel, einschließlich der eckigen Klammern. Groups[1] enthält den Text in eckigen Klammern, in diesem Fall „jsmith“. Der reguläre Ausdruck enthält eine durch (.*?) gekennzeichnete Erfassungsgruppe, die die Zeichen in den eckigen Klammern erfasst. Dies erklärt, warum Groups[1] „jsmith“ zurückgibt.

Es ist wichtig zu beachten, dass die Anzahl der Gruppen in der Groups-Sammlung vom regulären Ausdruck selbst abhängt. Im obigen Beispiel gibt es nur eine Erfassungsgruppe, daher besteht „Gruppen“ aus zwei Elementen: dem gesamten Spiel und der ersten erfassten Gruppe.

Um dieses Konzept weiter zu veranschaulichen, betrachten Sie ein komplexeres Beispiel:

var pattern = @"\[(.*?)\](.*)";
var match = Regex.Match("ignored [john] John Johnson", pattern);
Nach dem Login kopieren

In diesem Szenario stimmt der reguläre Ausdruck mit Text überein, der in eckigen Klammern eingeschlossen ist, gefolgt von anderem Text. Hier ist die Aufschlüsselung der Groups-Sammlung:

match.Value == "[john] John Johnson"
match.Groups[0].Value == "[john] John Johnson"
match.Groups[1].Value == "[john]"
match.Groups[2].Value == "John Johnson"
Nach dem Login kopieren

Wie Sie sehen können, erfasst Groups[1] den Text innerhalb des ersten Satzes eckiger Klammern, während Groups[2] den Text nach den Klammern erfasst. Die innersten Erfassungsgruppen können auch über eigene Erfassungssammlungen verfügen. Durch das Verständnis der Mechanismen regulärer Ausdrucksgruppen können Entwickler mithilfe dieser leistungsstarken Matching-Muster effektiv spezifische Informationen aus Textzeichenfolgen extrahieren.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich mithilfe regulärer Ausdrucksgruppen in C# bestimmte Informationen aus einer Textzeichenfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage