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

Python使用正则表达式匹配min、s、km格式时间里程字符串问题

正确正则表达式及实现

你原来的正则存在多处语法错误:

  • 把固定字符串min、s、km错误写在了量词花括号里,\w{min}属于完全错误的语法,固定匹配的普通字符串直接书写即可
  • 没有处理空格可选的规则,也没有适配小数点/逗号的两种情况
  • 距离部分的数字位数规则匹配错误

正确的正则写法如下:
r'\d{1,2}min\s*\d{1,2}s\s*\d{1,3}[.,]\d{1,2}km'

规则匹配说明

  • \d{1,2}min:匹配1-2位数字+固定字符串min
  • \s*:匹配0个或多个空格,满足空格可选的要求
  • \d{1,2}s:匹配1-2位数字+固定字符串s
  • \d{1,3}[.,]\d{1,2}km:匹配1-3位数字+点/逗号+1-2位数字+固定字符串km,适配点和逗号两种场景

如果需要和你原有代码逻辑一致,通过group(1)获取匹配结果,把正则整体包裹为捕获组即可:

import re
item = re.search(r'(\d{1,2}min\s*\d{1,2}s\s*\d{1,3}[.,]\d{1,2}km)', img1).group(1)

可直接覆盖所有符合规则的场景,测试用例验证:

test_cases = [
    "22min 7s 11.2km",  # 原始样例
    "22min7s11,2km",  # 无空格、逗号代替点
    "5min 23s 123.45km",  # 最长位数场景
    "9min3s 2.1km"  # 混合有无空格
]
for text in test_cases:
    match = re.search(r'(\d{1,2}min\s*\d{1,2}s\s*\d{1,3}[.,]\d{1,2}km)', text)
    if match:
        print(match.group(1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:57:03