Python中使用正则判断文本块首个单词是否为hh:mm格式时间
问题原因
- 直接用
==对比字符串和正则表达式语法是错误的:==是普通字符串全等匹配,只会判断拆分出来的第一个片段是否和你写的(\b[0-2][0-9]:[0-5][0-9]\b)这个字符串本身完全相同,不会触发正则匹配逻辑。 - 正则写法存在错误:普通Python字符串中
\b会被解析为退格转义符,不是正则规则里的单词边界;同时你额外添加的括号、边界匹配对已经拆分出来的第一个独立片段来说是冗余的,反而会导致匹配失败。 - 原有正则的匹配范围有瑕疵:
[0-2][0-9]会匹配到29这类不存在的小时值,需要做范围限制。
修复方案
首先需要导入Python的正则模块re,使用re.fullmatch匹配整个拆分出来的第一个片段即可:
import re mystring = '17:23 Some text some text some text' first_part = mystring.split(' ', 1)[0] # 正则匹配00:00~23:59的合法时间格式,r前缀表示原始字符串,避免转义符提前解析 if re.fullmatch(r'([01][0-9]|2[0-3]):[0-5][0-9]', first_part): print('x')
如果不想提前拆分字符串,也可以直接用正则匹配文本开头的时间格式:
import re mystring = '17:23 Some text some text some text' if re.match(r'([01][0-9]|2[0-3]):[0-5][0-9]\b', mystring): print('x')
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

