egrep для времени в формате H:MM:SS
При работе с файлом необходимо выполнить поиск строки с отметкой времени в формате H:MM:SS. Я попробовал следующий egrep '[0-9]:[0-9]:[0-9]'. Не работал для меня Что я делаю не так в регулярных выражениях?
3 ответа
Если вы хотите соответствовать
С 00:00:00 до 23:59:59
egrep '([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]'t
если вы хотите соответствовать
С 12:00 до 00:59
egrep -i '((?:0[0-9]|1[012]):[0-5][0-9]:[0-5][0-9]\s?(?:a|p)m)'
Я предлагаю вам использовать
egrep '[0-9]{2}:[0-9]{2}:[0-9]{2}'
где {2}
означает совпадение с последним символом как минимум два раза и максимум два раза (= ровно два раза), где последний символ в этом примере был числом от 0 до 9.
Если вы хотите найти по крайней мере один и максимум два, вы должны изменить его на
egrep '[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}'
который соответствует, например, на 0:1:22
а также 0:11:22
а также 00:11:22
а также 00:11:2
и так далее.
Ответ Sirius_Black дал также тестирование в реальном времени. Мой ответ будет соответствовать нереалистичным временам, таким как 99:99:99, что, однако, может быть продолжительностью.
[0-9]:[0-9]:[0-9]
будет соответствовать H:M:S, бот не H:MM:SS.
Каждый набор квадратных скобок соответствует одному символу.
Таким образом, чтобы получить что-то, что соответствует H: MM: SS, вы можете использовать:
[0-9]:[0-9][0-9]:[0-9][0-9]
Обратите внимание, что выше не будет соответствовать H: M: S
Для соответствия H: MM: SS ИЛИ H: M: S ИЛИ H: M: SS ИЛИ H: MM: S используйте следующее
[0-9]:[0-9]+:[0-9]+
+
означает совпадение с последним символом, 1 или более раз (включая первое совпадение)