C#Regex组多次捕获

以下代码返回1:

Regex.Match("aaa", "(a)").Groups[1].Captures.Count 

但是我希望收到3:我看到三次拍摄。

您需要获得匹配计数:

 Regex.Matches("aaa", "(a)").Count 

或者为正则表达式添加量词:

 Regex.Match("aaa", "(a)+").Groups[1].Captures.Count 

正则表达式(a)仅匹配单个a 。 在上面的第一个例子中,该正则表达式可以匹配三次。

在第二个示例中,正则表达式一次匹配几个s并将每个正则表达式捕获到组1中。

要做出选择,您应该考虑它们之间的以下区别:

 Regex.Matches("aaba", "(a)").Count // this is 3 Regex.Match("aaba", "(a)+").Groups[1].Captures.Count // this is 2 

第二个只产生两个捕获,因为它匹配两个s的第一个序列,但是当它找到b时它停止匹配。 +量词仅匹配未破坏的序列。

使用Regex.Matches方法代替?