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

Python正则表达式提取文件名中被下划线/点号包裹的6位数字问题

问题原因与解决方法

错误点说明

  1. 正则语法错误
    你写的_[0-9]{6}[_?|.]中,方括号[]是匹配单个字符的语法,里面的?、|都会被识别为普通字符而不会生效「或」逻辑,你想匹配结尾为_或.的话,直接写[_.]即可。
  2. 匹配消耗导致漏匹配
    你现在的正则属于消耗型匹配,第一个匹配结果_249364_会把两个6位数字中间的分隔符_当成结尾字符占用,第二个6位数字200825开头的_已经被前一个匹配用掉,自然无法触发第二次匹配。

正确实现

使用零宽正向断言包裹匹配规则,不会消耗字符串中的字符,可以识别重叠位置的匹配结果,完全符合你的预期。
以Python为例代码如下:

import re
f = "803611662_249364_200825.csv"
result = re.findall(r'(?=(_\d{6}[_.]))', f)
print(result)

运行输出:

['_249364_', '_200825.']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:54:02