如何通过正则表达式区分产品规格与外箱尺寸 避免匹配错误
问题根因
你当前使用的正则仅匹配「数字 + x + 数字 + 单位」的两段式结构,遇到20x20x20cm这类三段及以上多维度尺寸时,会自动截取后两段内容返回,因此出现误匹配。
适配方案
方案1:仅排除多维度尺寸误匹配(无外箱关键词也可生效)
在原有正则开头增加负向后视断言,禁止匹配项前缀存在「数字 + x」的结构,即可避免从多维度尺寸里截取两段式的错误结果:
修改后正则:(?<!\d\s*x\s*)\d+\s*x\s*\d*[.,]?\d+\s*(?:cm|g)\b
- 可正常匹配:
Abc 2x200g中的2x200g、Product 15x30cm中的15x30cm - 自动过滤:
Box 20x20x20cm中的所有尺寸片段,因为第二段20x20cm前缀存在20x,会被断言拦截
方案2:额外过滤带外箱标识的尺寸(适配有固定外箱关键词的场景)
如果你的产品名中外箱描述固定带Box、外箱、箱规这类前缀关键词,可以额外增加对应负向断言,直接排除这些关键词后的所有尺寸匹配:
修改后正则:(?<!Box\s*)(?<!外箱\s*)(?<!\d\s*x\s*)\d+\s*x\s*\d*[.,]?\d+\s*(?:cm|g)\b
如果有其他外箱相关前缀,新增对应的(?<!关键词\s*)断言段即可。
内容的提问来源于stack exchange,提问作者chenny
相关产品推荐
相关产品推荐

