我很难找到一个很好的资源来解释如何在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对象的GROUP集合,使用捕获组名称对其进行索引,例如

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

.net相关问答推荐

.NET restore/build在使用组织包的Github Action工作流中调用时获得401

如何手动注入依赖注入

如何将 Assembly.CodeBase 转换为 C# 中的文件系统路径?

什么是提升运算符?

关于在 .NET 中干净地终止线程的问题

在 C# 中获取 log4net 日志(log)文件

将毫秒转换为人类可读的时间间隔

如何摆脱 VS2008 中的目标程序集不包含服务类型错误消息?

发布版本中的 Debug.WriteLine

使用 EPPlus 时如何设置列类型

多个等待与 Task.WaitAll - 等效?

Microsoft.Practices.ServiceLocation 来自哪里?

哪个更快:清除集合或实例化新的

如何在我的 C# 程序的面板中运行另一个应用程序?

如何异步 Files.ReadAllLines 并等待结果?

在同一解决方案中引用 2 个不同版本的 log4net

如何在 WebBrowser 控件中注入 Javascript?

文件按文件名模式存在

在 .NET 中获取默认打印机的最佳方法是什么

根据条件从列表中删除项目