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

Python正则拆分多分隔符字母数字字符串提取指定子串

正则提取文件名指定字段解决方案

不要用re.split处理这类固定结构的字段提取——split的捕获组会把所有匹配到的分隔片段、未匹配的空组全部塞进返回列表,很容易产生冗余值,直接写匹配规则抓目标捕获组逻辑更简单,结果也干净。

可直接运行的代码

import re

s = '52798687KF_12712320CP.txt'
# 正则按规则匹配四个目标字段
reg = r'^(\d+)([A-Za-z]{2})_([A-Za-z0-9]+)([A-Za-z]{2})\.[^.]+$'
res = list(re.match(reg, s).groups())
print(res)

运行输出:

['52798687', 'KF', '12712320', 'CP']

正则规则对应说明

正则每个部分严格匹配给出的提取要求:

  • ^:锚定字符串开头,避免匹配到文件名中间的无关片段
  • (\d+):第一个捕获组,匹配1位及以上连续数字,对应第一个待提取元素
  • ([A-Za-z]{2}):第二个捕获组,匹配第一串数字和下划线之间的2个字母,对应第二个待提取元素
  • _:匹配文件名里的固定下划线分隔符
  • ([A-Za-z0-9]+):第三个捕获组,匹配1位及以上连续字母/数字,对应第三个待提取元素
  • ([A-Za-z]{2}):第四个捕获组,匹配扩展名点号前的2个字母,对应第四个待提取元素
  • \.[^.]+$:匹配末尾的文件扩展名(点号+后缀直到字符串结尾),这部分不放入捕获组,不会出现在结果里

如果后续文件名的数字长度、字母内容发生变化,只要整体结构保持「数字串+2字母_字母数字串+2字母.后缀」的规则,这段代码都能正常提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:36:27