用于当前时间的Python正则表达式
我在使用正则表达式(regex)时遇到了一些麻烦,想要创建一个可以匹配“hh/mm/ss”格式时间的正则表达式。我正在用Python做一个闹钟。
这是我目前写的:
import time, re
time_pattern = re.compile(r'([0-2][0-4])/([0-5][0-9])/([0-5][0-9])')
alarm_set = input("Set alarm time (hh/mm/ss): ")
while not time_pattern.match(alarm_set):
print('Invalid input. Must be expressed in "hh/mm/ss"')
alarm_set = input("Set alarm time (hh/mm/ss): ")
但是奇怪的是,当我尝试匹配'18/00/00'时,它并没有匹配成功。我完全不知道为什么会这样。尤其是因为它可以完美匹配'24/59/59'和'00/00/00'。这让我觉得很奇怪,因为我觉得我的正则表达式应该没问题。
如果有人能帮帮我,我会非常感激的 =)
2 个回答
2
也许[0-4]这一部分就是导致18/00/00不匹配的原因吧?
4
它不匹配 18/00/00
是因为你用以下方式来匹配小时:
[0-2][0-4]
你可以通过使用
[0-1][0-9]|2[0-4]
来修复这个问题。
一个更好的方法可能是使用 strptime
,而不是使用正则表达式。