如何匹配23:59之间的数字范围?

2024-06-01 00:42:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下格式的可能字符串:

x:y

其中x&;y可以是多个数字。我想匹配23:59的反义词,意思是x必须是>;二十三及;y必须是>;59,怎么写那个图案?我的意图是,如果字符串x:y与时间格式不同,即08:23,我希望将其排除在外。请注意,字符串可以是:

8:23 OR
08:23

两者均指上午8:23。我必须与23:59相反,因为我的程序逻辑是这样工作的。以下模式似乎与0匹配<;x<=二十三及;0<;y<=59

 ([0-1][1-9]|2[0-4]):[0-5][0-9]

如果上面的正则表达式是正确的,如何匹配与此相反的表达式


Tags: or字符串ltgt表达式格式时间模式
3条回答

看,这里可能会有人来营救:

\b(?!23:59)([0-1][0-9]|2[0-3]):[0-5][0-9]\b

模式(?!23:59)开头的负前瞻排除了23:59,模式的其余部分允许所有其他时间:分钟

Demo

使用dateutil.parser的一种方法:

import dateutil.parser as dparser

def is_time(str_):
    try:
        dparser.parse(str_, fuzzy=True)
        return True
    except ValueError:
        return False

times = ["8:23", "08:23", "28:23", "23:61"]

for t in times:
    print(t, is_time(t))

输出:

8:23 True
08:23 True
28:23 False # Wrong hour
23:61 False # Wrong min
(((2[4-9]|[3-9][0-9]):\d\d)|(\d\d:([6-9][0-9])))

相关问题 更多 >