我很难找到一个很好的资源来解释如何在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>
我已经尝试了在各种网站上发现的其他几种“方法”,但是得到的结果仍然相同。
如何访问正则表达式中指定的命名捕获组?
3
向后引用应采用(?<link>。*)的格式,而不应采用(?<link>。*?)的格式
—
SO用户
仅供参考:如果您试图将命名的捕获组存储在xml文件中,则
—
rtpHarry
<>
它将破坏它。(?'link'.*)
在这种情况下,您可以改用。与这个问题并不完全相关,但我是从Google搜索“ .net命名捕获组”中获得的,因此我确定其他人也是如此...
带有很好示例的StackOverflow链接:stackoverflow.com/a/1381163/463206 另外,@ rtpHarry,不,
—
Radarbob 2012年
<>
不会破坏它。我能够将myRegex.GetGroupNames()
集合用作XML元素名称。