Existe uma maneira de obter o nome de um grupo capturado em 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);
}
Eu quero obter este resultado:
Grupo: [não sei o que deveria ir aqui], Valor: 123456789 09/04/2009 999 Grupo: número, valor: 123456789 Grupo: data, Valor: 09/04/2009 Grupo: código, valor: 999
A maneira mais limpa de fazer isso é usando este método de extensão:
Depois que esse método de extensão estiver em vigor, você pode obter nomes e valores como este:
fonte
Desde o .NET 4.7, há
Group.Name
propriedades disponíveis .fonte
Você deve usar
GetGroupNames();
e o código será semelhante a este:fonte
A classe Regex é a chave para isso!
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.groupnamefromnumber.aspx
fonte
group.Index
é a posição do início do grupo de partida no texto original. Não é o "índice" do grupo na regex.