首页 >后端开发 >C++ >正则表达式组在 C# 中如何工作?

正则表达式组在 C# 中如何工作?

Patricia Arquette
Patricia Arquette原创
2024-10-29 12:28:02305浏览

How do Regular Expression Groups Work in C#?

C# 中的正则表达式组

在以下代码块中,提供的正则表达式提取方括号内的内容:

var pattern = @"\[(.*?)\]";
var matches = Regex.Matches(user, pattern);

输入用户 == "Josh Smith [jsmith]":

matches.Count == 1
matches[0].Value == "[jsmith]"

但是,匹配[0].Groups.Count == 2,其中:

matches[0].Groups[0].Value == "[jsmith]"
matches[0].Groups[1].Value == "jsmith"

了解组集合

  • match.Groups[0] 始终包含整个匹配项,与 match.Value 相同。
  • match.Groups[1 ] 捕获正则表达式中的第一组。

在本例中:

  • 模式定义为 @"[(.*?)]",其中 (. *?) 是捕获组。
  • 正则表达式匹配整个括号括起来的字符串以及括号内的内容。

因此,match.Groups[1]。值检索括号内的内容,“jsmith”。

比赛中的组数

以下规则控制比赛中的组数:

  • 每场比赛在索引 0 处都有一个组,这始终是整个比赛。
  • 附加组的数量取决于正则表达式中定义的捕获组。
  • 如果没有定义捕获组,则匹配将只有一组。

在提供的示例中,由于模式包含一个捕获组,因此 match.Groups.Count 将始终为 2。但是,具有多个捕获组的更复杂的正则表达式将导致更多的组数。

其他示例

考虑以下模式并匹配:

var pattern = @"\[(.*?)\](.*)";
var match = Regex.Match("ignored [john] John Johnson", pattern);
  • match.Value 为“[john] John Johnson”。
  • match.Groups[0] 为“[john] John Johnson”。
  • match.Groups[1 ] 是 [john]。
  • match.Groups[2] 是 John Johnson。

在更复杂的模式中:

var pattern = @"(\[.*?\])+";
var match = Regex.Match("[john][johnny]", pattern);
  • match .值为“[john][johnny]”。
  • match.Groups[0] 为“[john][johnny]”。
  • match.Groups[1] 为 [john] [约翰尼].
  • match.Groups[1].Captures[0] 是 [约翰].
  • match.Groups[1].Captures[1] 是 [约翰尼].

理解这些概念对于利用 C# 中正则表达式组的强大功能至关重要。

以上是正则表达式组在 C# 中如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn