输入为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?
当我从正则表达式中删除括号时,它可以正常工作。
答案 0 :(得分:4)
match.Groups
中的第一项包含正则表达式所选的整个匹配项。第二项是括号中的内容。
由于正则表达式和输入基本上是相同的字符串"55"
,因此您将获得两个相同的匹配:一个匹配整个输入,另一个匹配捕获组(括号)。
这两个都是连接在一起的,你得到"55" + "55"
,即"5555"
。