Gibt es eine Möglichkeit, den Namen einer erfassten Gruppe in C # abzurufen?
string line = "No.123456789 04/09/2009 999";
Regex regex = new Regex(@"(?<number>[\d]{9}) (?<date>[\d]{2}/[\d]{2}/[\d]{4}) (?<code>.*)");
GroupCollection groups = regex.Match(line).Groups;
foreach (Group group in groups)
{
Console.WriteLine("Group: {0}, Value: {1}", ???, group.Value);
}
Ich möchte dieses Ergebnis erhalten:
Gruppe: [Ich weiß nicht, was hier hingehen soll], Wert: 123456789 04/09/2009 999 Gruppe: Nummer, Wert: 123456789 Gruppe: Datum, Wert: 04/09/2009 Gruppe: Code, Wert: 999
Der sauberste Weg, dies zu tun, ist die Verwendung dieser Erweiterungsmethode:
Sobald diese Erweiterungsmethode eingerichtet ist, können Sie Namen und Werte wie folgt abrufen:
quelle
Seit .NET 4.7 ist eine
Group.Name
Eigenschaft verfügbar .quelle
Sie sollten verwenden
GetGroupNames();
und der Code sieht ungefähr so aus:quelle
Die Regex-Klasse ist der Schlüssel dazu!
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.groupnamefromnumber.aspx
quelle
group.Index
ist die Position des Starts der Matchgruppe im Originaltext. Nicht der "Index" der Gruppe in der Regex.