Регулярное выражение и сопоставление даты - PullRequest
1 голос
/ 30 июля 2010

Я хочу найти все возможные даты в строке, используя Regex.В моем коде у меня есть это:

String dateSearchPattern = @"(?<Day>\d{2}).(?<Month>\d{2}).(?<Year>\d{4})|(?<Day>\d{2}).(?<Month>\d{2}).(?<Year>\d{2})";

// date format: dd.mm.yyyy or d.m.yyyy or dd.mm.yy or d.m.yy
String searchText = "20.03.2010.25.03.10";

Regex.Matches(searchText, dateSearchPattern); // the matching SHOULD give a count of 2

Приведенный выше код дает только 1 совпадение, где он должен дать 2. Также мне нужно иметь шаблон, когда формат даты похож на dmyyyy или dmyy.

Ответы [ 2 ]

0 голосов
/ 30 июля 2010

Вы можете изменить свой шаблон на это:

"(?<Day>\d{1,2}).(?<Month>\d{1,2}).(?:(?<Year>\d{4})|(?<Year>\d{2}))"
0 голосов
/ 30 июля 2010

Шаблон выглядит совершенно нормально.Это дает два матча.Вы случайно использовали следующую строку для проверки количества?

var match = Regex.Matches(searchText, dateSearchPattern);
Console.WriteLine(match.Count);

Я использовал SD 3 в .Net 3.5 (без sp1), и ваш код дает желаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...