在 .NET 正则表达式中访问命名捕获组
在 .NET 正则表达式中访问命名捕获组需要使用 MatchCollection.Groups
属性,并使用捕获组名称作为索引。让我们解决您在代码中遇到的问题:
<code class="language-csharp">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());</code>
这段代码尝试通过访问 Captures
集合来检索捕获组的值,但它只检索整个匹配的字符串。要访问特定的命名捕获组,您需要使用 MatchCollection.Groups
属性,如下所示:
<code class="language-csharp">foreach (Match m in mc) { MessageBox.Show(m.Groups["link"].Value); // 将 "link" 替换为任何其他命名捕获组名称 }</code>
通过使用捕获组名称(例如,“link”)作为 MatchCollection.Groups
属性的索引,您可以检索该特定命名捕获组的值。在此示例中,m.Groups["link"].Value
表达式检索名为“link”的捕获组的值。
以上是如何访问 .NET Regex 中的命名捕获组?的详细内容。更多信息请关注PHP中文网其他相关文章!