Existe-t-il un moyen d'obtenir le nom d'un groupe capturé en 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);
}
Je veux obtenir ce résultat:
Groupe: [Je ne sais pas ce qu'il faut faire ici], Valeur: 123456789 09/04/2009 999 Groupe: nombre, valeur: 123456789 Groupe: date, Valeur: 04/09/2009 Groupe: code, Valeur: 999
Le moyen le plus propre de le faire est d'utiliser cette méthode d'extension:
Une fois cette méthode d'extension en place, vous pouvez obtenir des noms et des valeurs comme celui-ci:
la source
Depuis .NET 4.7, une
Group.Name
propriété est disponible .la source
Vous devriez utiliser
GetGroupNames();
et le code ressemblera à ceci:la source
La classe Regex est la clé de cela!
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.groupnamefromnumber.aspx
la source
group.Index
c'est la position du début du groupe de correspondance dans le texte d'origine. Pas l '«index» du groupe dans l'expression régulière.