Match.Groups [] .Value返回重复值

时间:2011-07-24 00:25:05

标签: c# regex match regex-group

输入为55,我的正则表达式为^(5{2})$。理想情况下(至少对我而言)这应该返回以5开头并以5右开头的每个字符串?

但是当我的c#如下所示:

Match match = Regex.Match(input, String.Format(@"{0}", regex));
string outcome = null;

if (match.Success)
{
    for (int i = 0; i < match.Groups.Count; i++)
    {
        outcome += match.Groups[i].Value;
    }
}

为什么我的字符串outcome返回5555而不是55?

当我从正则表达式中删除括号时,它可以正常工作。

1 个答案:

答案 0 :(得分:4)

match.Groups中的第一项包含正则表达式所选的整个匹配项。第二项是括号中的内容。

由于正则表达式和输入基本上是相同的字符串"55",因此您将获得两个相同的匹配:一个匹配整个输入,另一个匹配捕获组(括号)。

这两个都是连接在一起的,你得到"55" + "55",即"5555"