Попробуйте использовать следующий шаблон, если используете re.match
:
[0-5][0-9](?:-[0-5][0-9]){3}$
. Эта фраза соответствует начальному номеру, начинающемуся с 0 по 5, за которым следует любая вторая цифра.Затем следует тире и число с теми же правилами, это количество точно в три раза.Обратите внимание, что re.match
якорь в начале по умолчанию, поэтому нам нужен только конечный якорь $
.
Код:
print(re.match(r'([0-5][0-9](?:-[0-5][0-9]){3})$', '59-59-59-59').groups())
('59-59-59-59',)
Если вы намереваетесь действительно соответствовать одно и то же число четыре раза подряд, а затем посмотрите ответ @ Thefourthbird.
Если вы хотите найти такую строку в большем тексте, подумайте об использовании re.search
.В этом случае используйте этот шаблон:
(?:^|(?<=\s))[0-5][0-9](?:-[0-5][0-9]){3}(?=\s|$)
Обратите внимание, что вместо использования границ слова \b
я использовал обходные пути для принудительного завершения конца слова здесь.Это означает, что приведенный выше шаблон будет не соответствовать чему-то вроде 59-59-59-59-59
.