Как выделить время вместе с предлогом?

Имеется строка: "Нужно в 13:40 зайти в магазин" Что бы выделить время я использую регулярное выражение @"([01]?[0-9]|2[0-3])\W[0-9][0-9]; Можно ли с помощью регулярного выражения выделить время с предлогом 'в'? Вся проблема в том,что между предлогом и временем не всегда один пробел

C#
  string message ="Нужно в 13:40 зайти в магазин";
  string pattern = @"([01]?[0-9]|2[0-3])\W[0-9][0-9]"; 
  Regex newReg = new Regex(pattern);
  MatchCollection matches = newReg.Matches(message);

Ответы (1 шт):

Автор решения: Sergey Kovalev

Так и добавьте в начало регулярного выражения "в" с произвольным количеством пробелов, а лучше и табуляций.

string pattern = @"в\s+([01]?[0-9]|2[0-3])(\W[0-9][0-9])";

Если нужно ещё и удалять лишнее, и оставлять один единственный пробел, то можно сразу воспользоваться группами, и взять только нужное:

string message = "Нужно в 13:40 зайти в магазин";
string pattern = @"(в)\s+([01]?[0-9]|2[0-3])(\W[0-9][0-9])";
Regex newReg = new Regex(pattern);
MatchCollection matches = newReg.Matches(message);
// ... здесь проверить на успешный поиск
var example = $"{matches.First().Groups[1]} {matches.First().Groups[2]}{matches.First().Groups[3]}";
→ Ссылка