批次提取正则怎么写

批次提取正则写法示例:

通用规则(提取8位数字,如20250301):

df['批次'] = df['商品名'].str.extract(r'(d{8})')

生鲜商品常见格式及正则:

格式示例 正则 提取结果
三文鱼_20250301 r'_(d{8})' 20250301
20250301-冰鲜虾仁 r'^(d{8})' 20250301
虾仁_B20250301_10kg r'[A-Z](d{8})' 20250301
2025-03-01-三文鱼 r'(d{4}-d{2}-d{2})' 2025-03-01

最稳健写法(提取所有连续数字中最长的8位以上序列):

df['批次'] = df['商品名'].str.findall(r'(d{8,})').str[-1]  # 取最后一段数字

注意:若批次号带字母(如B20250301),需排除前置字母:

df['批次'] = df['商品名'].str.extract(r'[A-Z]?(d{8})')