@LakeForest

Как написать рег. выражение для поиска по паттерну: число часов/час число минута/минуты?

Пытаюсь написать на regex101. Почему-то ни одна регулярка не работает как надо, не понимаю, что не так пишу..
[\d{1,2} (?:час){1} \d{1,2} (?:минута){1}]

Примеры:
12 часов минут (здесь ничего)
сейчас 16 часов 26 минут (16 часов 26 минут)
8 час (ничего)
9 час 10 минут (9 час 10 минут)
4 часа 3 часа 22 минуты (здесь найти 3 часа 22 минуты)
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Регулярные выражения
\d{1,2} час(?:а|ов)? \d{1,2} минут(?:а|ы)?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Вообще, вариант 0xD34F прямее, т.к. исключает всякие косяки, но если твоим подходом - \d{1,2} час.{0,2} \d{1,2} мин.{2,3}.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Не напасёшся регулярок на все фантастические форматы времени.

Ты вот уточни ты чаще хочешь распознать ложное время или пропустить верное?

Я вот вижу что 3 позитивных кейса где время распознано - состоят просто из 2-3 чисел разделенных просто символами.

сейчас 16 часов 26 минут
9 час 10 минут
4 часа 3 часа 22 минуты


Вот просто взять

\d+....\d+....(\d+)? и

и гнать это по всему тексту. Ложные срабатывания отпадут дальше по конструктору объекта дата-время.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы