You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的时间替换正则表达式无法正常工作?

解决句子中24小时制时间的替换问题

你之前的正则失效核心原因是用了^和$锚点——这两个符号会强制正则匹配整个字符串就是时间的场景,但你的目标是替换句子中间的时间片段,所以锚点会导致正则无法定位到句子里的时间内容。

修正后的解决方案

首先我们需要一个能精准匹配句子中符合要求的24小时制时间的正则:

  • 支持1位或2位的小时(0-23)
  • 固定2位的分钟(00-59)
  • 用单词边界避免误匹配类似123:45这种非时间的内容

对应的正则表达式为:\b(?:2[0-3]|[01]?\d):[0-5]\d\b

以下是可直接运行的示例代码:

import re

# 测试句子
sentence1 = 'I will be there at 4:15 later today'
sentence2 = 'I will be there at 14:06 later today'

# 你想要替换成的目标时间
target_time = '7:15'

# 执行替换操作
result1 = re.sub(r'\b(?:2[0-3]|[01]?\d):[0-5]\d\b', target_time, sentence1)
result2 = re.sub(r'\b(?:2[0-3]|[01]?\d):[0-5]\d\b', target_time, sentence2)

print(result1)  # 输出: I will be there at 7:15 later today
print(result2)  # 输出: I will be there at 7:15 later today

正则规则说明

  • \b:单词边界,确保我们匹配的是独立的时间片段,而非更长字符串的一部分
  • (?:2[0-3]|[01]?\d):非捕获组,匹配24小时制的小时:
    • 2[0-3]:匹配20-23点的小时格式
    • [01]?\d:匹配0-19点的小时格式([01]?表示可选的前缀0/1,后面跟任意数字)
  • :[0-5]\d:匹配分钟部分,确保是00-59的两位数字格式

内容的提问来源于stack exchange,提问作者user9127040

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:11:27