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

C#'中的反向引用问题;s正则表达式,c#,regex,backreference,C#,Regex,Backreference,目标是从中提取时间和日期字符串: <strong>Date</strong> - Thursday, June 2 2011 9:00PM<br> 日期2011年6月2日星期四晚上9:00 代码如下: Match m = Regex.Match(line, "<strong>Date</strong> - (.*) (.*)<br>"); date = m.Captures[0].Value; time = m.Capt

目标是从中提取时间和日期字符串:

<strong>Date</strong> - Thursday, June 2 2011 9:00PM<br>
日期2011年6月2日星期四晚上9:00
代码如下:

Match m = Regex.Match(line, "<strong>Date</strong> - (.*) (.*)<br>");
date = m.Captures[0].Value;
time = m.Captures[1].Value;
Match m=Regex.Match(行“日期”-(.*)(.*)
”; 日期=m.Captures[0]。值; 时间=m.Captures[1]。值;

由于正则表达式是贪婪的,它应该匹配第一组,一直到最后一个空格。但事实并非如此<代码>捕获[0]是整个
行,而
捕获[1]
超出范围。为什么?

使用组,而不是捕获。您的结果将分为[1]组和[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;
}
Match m=Regex.Match(行“日期”-(?*)(?*)
”; 如果(m.成功) { 日期=m.Groups[“日期”].值; 时间=m组[“时间”]值; }
对于记录,您的正则表达式中没有(或不需要)任何反向引用,反向引用看起来像
\1