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

如何重写正则表达式统一匹配3-4位数字加加号的组合场景?

正则优化实现方案

最优正则模式

pattern = r"(\d{3,4})\D*?\+\D*?(\d{3,4})"

对比现有写法的优势:

  • 用\d{3,4}严格限定数字长度为3或4位,完全贴合需求,不会误匹配5位及以上的无效数字
  • 非贪婪匹配\D*?适配数字和加号之间的任意非数字内容(包括货币符号、字母、空格、特殊字符等),不会出现吞字符的误匹配问题
  • 不需要单独捕获加号做判断,只要能匹配到分组就符合格式要求,逻辑更简洁

完整可运行代码

import re

# 测试用例
cells = [
    "$800 + AXL $200",
    "USD1000+USD2000 no refund, expires Jan 20 2022",
    "$3000 + sometext $200",
    "$200 + sometext $3000"
]

pattern = r"(\d{3,4})\D*?\+\D*?(\d{3,4})"

for idx, cell in enumerate(cells, 1):
    match_res = re.search(pattern, cell)
    if match_res:
        num1 = int(match_res.group(1))
        num2 = int(match_res.group(2))
        total = num1 + num2
        print(f"cell{idx}匹配成功,求和结果:{num1} + {num2} = {total}")
    else:
        print(f"cell{idx}未匹配到符合规则的内容")

运行输出

cell1匹配成功,求和结果:800 + 200 = 1000
cell2匹配成功,求和结果:1000 + 2000 = 3000
cell3匹配成功,求和结果:3000 + 200 = 3200
cell4匹配成功,求和结果:200 + 3000 = 3200

注意事项

建议用re.search而非re.match,后者要求模式从字符串开头匹配,若数字前存在其他内容会匹配失败,re.search会全局扫描字符串找到第一个符合规则的模式,适配性更强。

内容的提问来源于stack exchange,提问作者Capitán Planeta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:57:01