Czy istnieje sposób, aby uzyskać nazwę przechwyconej grupy w C #?
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);
}
Chcę uzyskać ten wynik:
Grupa: [Nie wiem, co mam tu znaleźć], Wartość: 123456789 09.04.2009 999 Grupa: liczba, Wartość: 123456789 Grupa: data, Wartość: 09.04.2009 Grupa: kod, Wartość: 999
Najczystszym sposobem na to jest użycie tej metody rozszerzenia:
Po wprowadzeniu tej metody rozszerzenia możesz uzyskać takie nazwy i wartości:
źródło
Od .NET 4.7, jest
Group.Name
nieruchomość dostępna .źródło
Powinieneś użyć,
GetGroupNames();
a kod będzie wyglądał mniej więcej tak:źródło
Klasa Regex jest do tego kluczem!
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.groupnamefromnumber.aspx
źródło
group.Index
jest to pozycja początku grupy dopasowań w tekście oryginalnym. Nie jest to „indeks” grupy w wyrażeniu regularnym.