c# - 如何访问 .NET Regex 中的命名捕获组?

标签 c# .net regex

我很难找到解释如何在 C# 中使用命名捕获组的好资源。这是我到目前为止的代码:

string page = Encoding.ASCII.GetString(bytePage);
Regex qariRegex = new Regex("<td><a href=\"(?<link>.*?)\">(?<name>.*?)</a></td>");
MatchCollection mc = qariRegex.Matches(page);
CaptureCollection cc = mc[0].Captures;
MessageBox.Show(cc[0].ToString());

然而,这总是只显示整行:

<td><a href="/path/to/file">Name of File</a></td> 

我尝试了在各种网站上找到的其他几种“方法”,但我一直得到相同的结果。

如何访问在我的正则表达式中指定的命名捕获组?

最佳答案

使用 Match 对象的组集合,使用捕获组名称对其进行索引,例如

foreach (Match m in mc){
    MessageBox.Show(m.Groups["link"].Value);
}

关于c# - 如何访问 .NET Regex 中的命名捕获组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/906493/

相关文章:

c# - 读取 PDF 文档作为指定要呈现的 PDF 的一部分

c# linq 遍历数据库中的层次结构数据

c# - 使用包装器类模拟 .NET 类

c# - 按创建顺序对哈希表进行排序

mysql - 将自定义行添加到 GridView 表

c# - 通用词典 - 出现转换错误

javascript - 将 SVG 'd' 属性正确拆分为标记的正则表达式是什么?

javascript - 使用\B 实现正则表达式,以处理与包含字母的表情符号不匹配的表情符号

java - 排除特殊字符的正则表达式

c# - 在运行时创建 lambda 表达式