Соответствие часов / минут / секунд в регулярных выражениях - лучший способ?

Поэтому мне нужно получить часы, минуты и секунды из таких записей:

4:43:129.43.121:0001,045909

Первые два часа, минуты и секунды. Рядом есть минуты и секунды. Последние два - просто секунды.

И я придумал это регулярное выражение, которое работает ..:

\A(?\d{1,2})(?::|\.)(?\d{1,2})(?::|\.)(?\d{1,2})\z|\A(?\d{1,2})(?::|\.)(?\d{1,2})\z|\A(?\d{1,2})\z

Но это уродливо, и я хочу изменить его, чтобы не было 3 разных выражений (в основном просто для изучения). Я попробовал это:

\A(?:(?\d{1,2})(?::|\.){0,1})(?:(?\d{1,2})(?::|\.){0,1})(?:(?\d{1,2}){0,1})\z

Но это не работает - минуты и секунды иногда облажаются. Мой мозг болит, и я могуНе могу понять, что я делаю не так.

Ответы на вопрос(4)

Ваш ответ на вопрос