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

如何修正正则表达式实现特定时间格式转换与时段替换?

实现特定时间格式的替换逻辑

需求说明

需要处理字符串中的特定时间格式:

  • 匹配:XX:00 am格式的子串,替换为00:XX am
  • 匹配:XX:00 pm格式的子串,替换为00:XX am(同时将pm转为am)
  • 不匹配上述模式的子串(如15:00 pm)保持不变

解决方案

使用Python的re.sub()方法,配合精准匹配目标格式的正则表达式即可实现。

正则表达式说明

正确的正则表达式为:r":(\d{2}):00\s+(am|pm)"

  • : 匹配目标子串开头的冒号
  • (\d{2}) 捕获两位数字(即XX部分),作为后续替换的引用分组
  • :00 匹配固定的:00时间部分
  • \s+ 匹配时间与am/pm之间的一个或多个空格
  • (am|pm) 捕获时段标识(am/pm),仅用于匹配,替换时统一转为am

替换逻辑

因为不管原时段是am还是pm,最终都要输出am,所以替换字符串直接写为r"00:\1 am",其中\1引用捕获到的两位数字XX。

完整代码示例

import re

input_text = "a :01:00 pm :30:00 am ; :11:00 am, :00:00 am,: 15:00 pm  : :00:00 am hay 1"
# 执行替换
output_text = re.sub(r":(\d{2}):00\s+(am|pm)", r"00:\1 am", input_text)

print(output_text)
# 输出结果:
# a 00:01 am 00:30 am ; 00:11 am, 00:00 am,: 15:00 pm  : 00:00 am hay 1

适配说明

该正则仅匹配严格符合:XX:00 am/pm格式的子串,其他任何格式的内容都会保持原样,完全适配未知输入的场景(比如无需要替换的内容时,输出与输入一致)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:24:32