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

正则表达式匹配字符串:检测图片文件名中的SKU格式

验证SKU格式匹配代码的有效性

首先得说,你这段代码没办法正确匹配目标SKU格式,问题出在正则表达式的写法上,咱们一步步拆解:

原代码的核心问题

你写的正则是把两个带锚点的表达式硬拼接起来:r"^[0-9]{5}$" + '_' + r"^[0-9]{2}$",展开后是"^[0-9]{5}$_^[0-9]{2}$"——这里的^代表字符串开头,$代表字符串结尾,这就相当于要求:

  • 整个字符串是5位数字(^[0-9]{5}$)
  • 同时整个字符串又是下划线加2位数字(_^[0-9]{2}$,这里的^还强制要求下划线后面是字符串开头,逻辑完全矛盾)

这种情况下,没有任何字符串能满足这个正则,哪怕是完全符合格式的10008_01也会被判定为不匹配。

修正后的正确写法

目标格式是「5位数字+下划线+2位数字」,对应的正则应该把锚点只加在整个表达式的开头和结尾,中间直接拼接格式内容:

import re

product_image_list = ["10008_01", "23521_18", "abc123", "1234_01", "123456_01"]
for image in product_image_list:
    # 用\d代替[0-9]更简洁,效果完全一致
    if re.match(r"^\d{5}_\d{2}$", image):
        print('Match: '+ image)
    else:
        print("NO match: " + image)

运行这段代码,符合格式的SKU会被正确识别,位数不对、含非数字字符的文件名会被标记为不匹配。

额外补充:如果文件名带扩展名

如果你的image变量包含图片扩展名(比如10008_01.jpg),那需要调整正则来匹配后缀部分,比如:

if re.match(r"^\d{5}_\d{2}\.\w+$", image):

这个正则会匹配「5位数字+下划线+2位数字+点+任意扩展名」的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:00:52