c# - 如何在 C# 正则表达式中获取捕获组的名称?

标签 c# regex

有没有办法在 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);
}

我想得到这个结果:

Group: [I don´t know what should go here], Value: 123456789  04/09/2009  999
Group: number, Value: 123456789
Group: date,   Value: 04/09/2009
Group: code,   Value: 999

最佳答案

使用GetGroupNames获取表达式中的组列表,然后迭代这些组,使用名称作为组集合中的键。

例如,

GroupCollection groups = regex.Match(line).Groups;

foreach (string groupName in regex.GetGroupNames())
{
    Console.WriteLine(
       "Group: {0}, Value: {1}",
       groupName,
       groups[groupName].Value);
}

关于c# - 如何在 C# 正则表达式中获取捕获组的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1381097/

相关文章:

javascript - 如何从c#wpf调用js函数

c# - MVC# 在 Winform 中流行吗?

python - 在 python 正则表达式中将 1 个单词限制为区分大小写,将其他单词限制为不区分大小写 | (管道)

python regexp方法返回一个包含空元素的列表

正则表达式:不包含子字符串

c# - 在 C# 中构建稀疏数组的更快算法或技术

c# - 使用 HTML Agility Pack 仅获取网页文本?

c# - 在单例管理器类中保存对 CloudBlobContainer 对象的引用是否安全?

regex - 如何在第三个字符后插入连字符

Javascript:文本字符串到字符数组