Я пытаюсь создать приложение для отслеживания времени, которое должно анализировать строку, которая может иметь (но не всегда) время в одном из многих форматов или комбинаций. Форматы, которые я проверяю,
- ч|час|часы|часы
- м|мин|мин|минут
Они могут быть с пробелом между числом и часами или минутами и могут быть объединены или только одно или другое. Некоторые примеры:
- 1h
- 1 час 20 минут
- 2 часа 15 м
Регулярное выражение для сопоставления времени, которое у меня есть в настоящее время:
((\d+(\.\d+)?)\s*(h|hr|hrs|hours))?(\s*(\d+)\s*(m|min|mins|minutes))?
Это отлично работает, если я просто передаю ему строку времени без чего-либо перед ней. Моя проблема в том, что я хочу проанализировать полную текстовую строку со временем, появляющимся в любом месте. Некоторые примеры:
- Запись времени для некоторой работы 1ч 15м
- 2 часа 45 минут Это время для некоторой работы
- Это запись времени 1 час 25 минут для некоторой работы
- Это временная запись для некоторой работы
Есть ли у кого-нибудь предложения о том, как с этим справиться?
((\d+(?:\.\d+)?)\s*(?:hours?|h(?:r|rs)?))?(?:\s*((\d+)\s*(?:minutes|mins?|m)))
? - person Wiktor Stribiżew   schedule 26.08.2015