【发布时间】:2011-07-24 00:25:04
【问题描述】:
输入是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?
当我从正则表达式中删除括号时,它可以完美运行。
【问题讨论】:
-
为什么需要拨打
String.Format(@"{0}", regex)?为什么不能自己传递正则表达式字符串? -
啊,我正要添加 /{0}/gi 但我忘记了。我正在从文本输入生成正则表达式,我希望有一个默认值以避免重新输入
-
另外,您的正则表达式并不匹配以 5 开头并以 5 结尾的每个字符串。它只匹配 exact 字符串
"55"。你想要的正则表达式(没有捕获)是^5.*5$。
标签: c# regex match regex-group