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

如何用preg_replace修正商品标题以适配Regex提取SKU

商品标题SKU提取的异常修正方案

核心需求

现有正则表达式/^E?\d+ ?.?/用于提取符合以下规则的SKU:

  • 3-4位纯数字
  • E开头加3-4位数字
  • 3-4位数字加单个字母(或空格加单个字母)

但部分异常标题的SKU是标题中间的首个符合规则的序列,需通过preg_replace将这类SKU移至标题开头,让原正则能正常提取。

实现方案

基础替换代码(针对纯数字SKU异常)

如果异常SKU仅为3-4位纯数字,使用以下代码:

$correctedTitle = preg_replace('/^(.*?)(\b\d{3,4}\b)(.*)$/', '$2 $1$3', $originalTitle);

全规则兼容替换代码

若异常SKU也可能包含E前缀或数字+字母组合,扩展正则覆盖所有SKU规则:

$correctedTitle = preg_replace('/^(.*?)(\bE?\d{3,4}(?: ?[A-Za-z])?\b)(.*)$/', '$2 $1$3', $originalTitle);

正则逻辑说明

  • ^(.*?):非贪婪匹配SKU之前的所有前置内容,确保定位到首个符合规则的SKU
  • (\bE?\d{3,4}(?: ?[A-Za-z])?\b):精准匹配符合规则的SKU:
    • E?:可选的E前缀
    • \d{3,4}:限定3-4位数字核心
    • (?: ?[A-Za-z])?:可选的空格+单个字母后缀(非捕获组,不干扰分组引用)
    • \b:单词边界,避免误匹配长数字串的子串(如避免从"12345"中提取"1234")
  • (.*)$:匹配SKU之后的所有后置内容
  • $2 $1$3:将SKU移至标题最前方,用空格分隔原前置内容与SKU,保证格式清晰

验证示例

  • 异常标题:夏季纯棉T恤 1234L 男士宽松款

  • 修正后标题:1234L 夏季纯棉T恤 男士宽松款

  • 原正则提取结果:1234L

  • 异常标题:家用料理机 E567 升级款

  • 修正后标题:E567 家用料理机 升级款

  • 原正则提取结果:E567

内容的提问来源于stack exchange,提问作者Faye D.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:25:20