以下代码返回1:
Regex.Match("aaa", "(a)").Groups[1].Captures.Count
但我希望得到3:我看到三次捕获。
答案 0 :(得分:11)
您需要获得匹配计数:
Regex.Matches("aaa", "(a)").Count
或者为正则表达式添加量词:
Regex.Match("aaa", "(a)+").Groups[1].Captures.Count
正则表达式(a)
仅匹配一个a
。在上面的第一个例子中,该正则表达式可以匹配三次。
在第二个示例中,正则表达式同时匹配多个a
并将每个{1}}捕获到组1中。
要做出选择,您应该考虑它们之间的以下差异:
Regex.Matches("aaba", "(a)").Count // this is 3
Regex.Match("aaba", "(a)+").Groups[1].Captures.Count // this is 2
第二个只产生两个捕获,因为它匹配两个a
的第一个序列,但是当它找到b
时它会停止匹配。 +
量词仅匹配不间断的序列。
答案 1 :(得分:3)
使用Regex.Matches
method代替吗?