Проблема с обратными ссылками в регулярном выражении C # - PullRequest
4 голосов
/ 05 июня 2011

Цель состоит в том, чтобы извлечь строки времени и даты из этого:

<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] находится вне диапазона.Почему?

1 Ответ

4 голосов
/ 05 июня 2011

Используйте группы, а не захваты.Ваши результаты будут в группах [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;
}
...