C#中正则表达式的反向引用问题

4
目标是从以下文本中提取时间和日期字符串:
<strong>Date</strong> - Thursday, June 2 2011 9:00PM<br>

这里是代码:

Match m = Regex.Match(line, "<strong>Date</strong> - (.*) (.*)<br>");
date = m.Captures[0].Value;
time = m.Captures[1].Value;

由于正则表达式的贪婪性,它应该匹配第一组一直到最后一个空格。但它没有这样做。Captures[0]是整个line,而Captures[1]超出了范围。为什么呢?


2
仅供参考,你的正则表达式中没有(也不需要)任何反向引用。反向引用的格式类似于\1 - svick
1个回答

4
使用分组而非捕获。您的结果将在Groups[1]和Groups[2]中。 个人建议给分组命名:
Match m = Regex.Match(line, "<strong>Date</strong> - (?<date>.*) (?<time>.*)<br>");
if( m.Success )
{
    date = m.Groups["date"].Value;
    time = m.Groups["time"].Value;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接