0

输入是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?

当我从正则表达式中删除括号时,它可以完美运行。

4

1 回答 1

4

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

由于 regex 和 input 本质上是相同的 string "55",因此您会得到两个相同的匹配项:一个用于匹配的整个输入,另一个用于捕获组(括号)。

这两个是连接的,你得到"55" + "55",就是"5555".

于 2011-07-24T00:27:59.133 回答