【发布时间】:2012-09-21 21:00:14
【问题描述】:
给定一个像这样的简单正则表达式:^(\d+\D+\d+)(.*) 和一个要解析为 15-APR-2012 @ 11:00:00 的字符串,使用替换 [$1]$2 会产生 [15-APR-2012] @ 11:00:00,如预期的那样。
我的问题是,当对此调用 Regex.Matches 时,我在索引 0 处收到一个匹配项,并且整个字符串:15-APR-2012 @ 11:00:00 显示为匹配项。但是真的有2场比赛。我怎样才能得到两场比赛?我应该看到索引 0 和索引 12。我使用的代码来自另一个 SO 线程:
// Get a collection of matches.
MatchCollection matches = Regex.Matches(inPutString, regexptrn);
foreach (Match match in matches)
{
foreach (Capture capture in match.Captures)
{
retVal += String.Format("Index={0}, Value={1}", capture.Index, capture.Value) + Environment.NewLine;
}
}
我对 .Matches() 的真正作用有什么误解吗?
好的。这是一个后续相同的字符串,新的正则表达式 "(..)(...)" 替换为 [$1]{$2} 导致 [10]{-AU}[G-]{201}[2 ]{@ 1}[1:]{45:}38 我们期待这一点。
匹配但是给出了这个:
Index=0, Value=10-AU
Index=5, Value=G-201
Index=10, Value=2 @ 1
Index=15, Value=1:45:
这表明 Matches 查看整个模式而不是其组。现在如何获得组匹配
【问题讨论】:
-
请编辑您的问题并将此信息添加到其中。在 cmets 中无法读取源代码。
-
已根据要求将评论移至发布。
标签: .net regex asp.net-4.0