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

Python正则表达式:提取含至少一位数字的产品型号

产品型号(货号)提取正则表达式优化方案

需求回顾

需要从产品名称中提取满足以下规则的型号/货号:

  • 以行首或空格作为前缀,行尾或空格作为后缀
  • 必须包含至少一位数字
  • 允许的字符:大小写字母、数字、.、-、/

问题分析

初始正则r'(^|\s)[A-Za-z0-9-./]+($|\s)'未实现「必须含至少一位数字」的校验;尝试的正则结构冗余,导致匹配结果不符合预期。

优化后的正则表达式

r'(?<=^|\s)[A-Za-z0-9-./]*\d[A-Za-z0-9-./]*(?=$|\s)'

正则解析

  • (?<=^|\s):正向零宽断言,确保匹配内容的前缀是行首或空格(不捕获空格,避免结果包含多余空格)
  • [A-Za-z0-9-./]*:匹配0个或多个允许的字符(数字前的部分)
  • \d:强制匹配至少一位数字,满足核心校验要求
  • [A-Za-z0-9-./]*:匹配0个或多个允许的字符(数字后的部分)
  • (?=$|\s):正向零宽断言,确保匹配内容的后缀是行尾或空格(不捕获空格)

示例验证

  1. 输入:Odeon Light Foco 4722/4W Wall Lamp → 输出:4722/4W
  2. 输入:Thermostat LUZAR LT0532 - Luzar art. LT0532 → 输出:LT0532(匹配到两个符合规则的结果,可根据业务需求选择取第一个或全部)
  3. 输入:Shock strut support in front of the right Febest FSS-TT9 → 输出:FSS-TT9

进阶优化(可选)

如果需要排除单独的数字(避免将产品名中独立的数字误判为型号),可使用以下正则:

r'(?<=^|\s)(?:[A-Za-z-./]+\d|\d[A-Za-z-./]+)[A-Za-z0-9-./]*(?=$|\s)'

该版本要求数字前后至少包含一个非数字的允许字符,进一步缩小匹配范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:30:21