Я пытаюсь совместить hh: mm: ss, но hh part является необязательным, и мне нужны только цифры для захвата групп.Регулярное совпадение для hh: mm: ss
Например, мои данные
- 1:04:12
- 43:32
- 12:11
Regex вывод должен быть [1,04,12] , [43,43] и [12,11]
Я пытаюсь совместить hh: mm: ss, но hh part является необязательным, и мне нужны только цифры для захвата групп.Регулярное совпадение для hh: mm: ss
Например, мои данные
Regex вывод должен быть [1,04,12] , [43,43] и [12,11]
(?:(\d{1,2}):)?(\d{2}):(\d{2})
http://rubular.com/r/aWlTwgJKVn
Чтобы запретить минуты и секунды> = 60 Изменение этого регулярного выражения
(?:(\d{1,2}):?)([0-5]\d):([0-5]\d)
немного проще будет это регулярное выражение, но это также соответствует времени, как 412:35
с a отсутствует :
(\d{0,2}):?(\d{2}):(\d{2})
Это то, что я придумал, но в вашей рублевой ссылке совпадение 2 возвращает значение nil для первой части. Разве дело не в том, чтобы не захватить часть, чтобы не получить эту группу? – user3754582
Получение значения nil делает ваш результат более последовательным, поскольку у вас есть опция 'hh' в group1 и' mm' всегда group2, 'ss' всегда group3. В противном случае результат будет довольно неприятным для интерпретации ... –
Разве не легче «взорваться» (':', $ input), а затем проверить количество возвращенных частей и проверить их отдельно? 'regex' - не совсем правильный инструмент для проверки того, принадлежит ли значение предоставленному диапазону значений. – axiac
Вы указали требования и ожидаемый результат. Итак, какова проблема/вопрос, возникший в вашем собственном решении? –
На каком языке вы работаете? –