C# 中的正则表达式组:了解匹配结果
考虑以下 C# 代码块:
<code class="csharp">var pattern = @"\[(.*?)\]"; var matches = Regex.Matches(user, pattern); if (matches.Count > 0 && matches[0].Groups.Count > 1) ...</code>
This代码使用正则表达式从用户输入字符串中提取括号内的文本。对于输入“Josh Smith [jsmith]”,代码正确返回以下结果:
matches.Count == 1 matches[0].Value == "[jsmith]"
但是,后续行提出了问题:
matches[0].Groups.Count == 2 matches[0].Groups[0].Value == "[jsmith]" matches[0].Groups[1].Value == "jsmith"
匹配分组
在正则表达式中,组用于捕获匹配的特定部分。默认情况下,整个匹配项在组 0 中捕获。可以使用括号定义其他捕获组。
在提供的代码中,正则表达式定义单个捕获组,用 (.*?) 表示。该组捕获方括号内的文本(在本例中为 jsmith)。因此:
嵌套组
在更复杂的正则表达式中,可以有嵌套组。在这些情况下,每个组都包含自己的捕获集。但是,在给定的代码中,只有一层分组,因此:
其他注意事项
以上是C# 中的正则表达式组如何捕获和访问匹配的子字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!