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

正则表达式需求:根据是否含连字符提取批号前缀字符

解决方案:批号前缀提取正则及Statistica实现

需求回顾

需要从两类批号中提取前缀:

  • 无连字符批号:提取前3个字符(例:RC219C0425 → RC2)
  • 带连字符批号:提取第一个连字符前的全部内容(要求该内容长度≥3,例:AR4-23-QCT-001 → AR4,LC3B-18-TEK-015 → LC3B)

原正则问题分析

你之前使用的正则"(^[A-Z0-9][A-Z0-9][A-Z0-9][[A-Z0-9]*-]?)"存在两个问题:

  1. 语法错误:嵌套方括号[[A-Z0-9]*-]不符合正则规范,方括号内无需重复嵌套
  2. 逻辑缺陷:未明确区分无连字符的场景,导致无法匹配无连字符的批号

修正后的正则及Statistica代码

正则表达式

^([A-Z0-9]{3,})(?:-.*)|^([A-Z0-9]{3})(.*)

逻辑说明:

  • 第一分支^([A-Z0-9]{3,})(?:-.*):匹配带连字符的批号,捕获第一个连字符前≥3位的字母数字前缀,忽略后续内容
  • 第二分支^([A-Z0-9]{3})(.*):匹配无连字符的批号,捕获前3位字母数字,忽略后续内容

Statistica变量转换节点代码

TEST$[30]=RE_REPLACE(PRODUCED_LOT,"^([A-Z0-9]{3,})(?:-.*)|^([A-Z0-9]{3})(.*)",'$1$2',"c")
  • 替换时使用$1$2:两种场景只会有一个捕获组有内容,最终结果即为目标前缀
  • "c"参数表示匹配时区分大小写(根据你的批号格式保留该参数)

验证结果

  • RC219C0425 → RC2
  • AR4-23-QCT-001 → AR4
  • LC3B-18-TEK-015 → LC3B
  • S34353341-000022 → S34353341

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:52:31