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
Susan SarandonOriginal
2024-10-30 19:28:30519Durchsuche

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]";

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]"

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"

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);

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"

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!

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