Регулярное выражение с двумя условиями
У меня есть список строк, в которых указаны номер, дата начала и окончания недели. Мне нужно из этих строк получить номер, дату начала и дату окончания недели. В случае если хотя бы что-то отсутствует, то игнорировать такую строку.
Вот пример списка:
- Неделя 1 (29.08-05.09)
- Неделя 2 (25.08-16.09)
- Неделя (29.08-03.10) //не подходит, нету номера недели
- Неделя 4 (29.08-03.09)
- Неделя 1 (11.08-) //не подходит, нету даты окончания
Сейчас у меня есть такое выражение: @"\d{2}.\d{2})|\d". С его помощью я могу получить требуемые данные из подходящих строк, но в то же время оно не игнорирует неподходящие строки
Ответы (1 шт):
Автор решения: Left Mail
→ Ссылка
using System.Text.RegularExpressions;
string pattern = @"Week\s(?<week>\d+)\s\((?<start>\d{2}\.\d{2})-(?<end>\d{2}\.\d{2})\)";
string[] lines = {
"Week 1 (29.08-05.09)",
"Week 2 (25.08-16.09)",
"Week 3 (29.08-03.10)",
"Week 4 (29.08-03.09)",
"Week 1 (11.08-)"
};
foreach (string line in lines)
{
Match match = Regex.Match(line, pattern);
if (match.Success)
{
string week = match.Groups["week"].Value;
string start = match.Groups["start"].Value;
string end = match.Groups["end"].Value;
Console.WriteLine("Week: {0}, Start date: {1}, End date: {2}", week, start, end);
}
}