1

在 python 中匹配 HH:MM 时间格式的正则表达式是什么?我正在使用

def is_time(self, str):
    reg = re.compile(r'[1-9]|1[0-2]:[0-9]{2}')

    if re.match(reg, str):
        return True
    else:
        return False

我也试过:

reg = re.compile(r'^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$')

但我一直在

类型错误:%d 格式:需要一个数字,而不是 str

我收到该错误是有道理的,因为我正在检查字符串中的数字,但我不确定如何解决它。任何帮助将不胜感激。

4

2 回答 2

7

你可能应该使用datetime.strptime

>>> import datetime

>>> datetime.datetime.strptime('12:34', '%H:%M')
datetime.datetime(1900, 1, 1, 12, 34)

>>> datetime.datetime.strptime('99:99', '%H:%M')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data '99:99' does not match format '%H:%M'
于 2013-06-28T17:16:31.527 回答
3

你应该只使用:

if reg.search(strs)

或者简单地说:

return reg.search(strs).

于 2013-06-28T17:12:15.463 回答