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

正则嵌套分组与量词问题:提取文件名及其中数字

通用正则方案提取文件名及其中的连续数字

问题原因

你用的(.*(\d+).*)\.pdf之所以只匹配到单个数字4,是因为第一个.*是贪婪匹配,会尽可能多吃掉字符——它会从开头一直匹配到最后一个数字的前一位,只留给\d+最后一个数字。

两种通用解决思路

方案1:用非贪婪匹配调整捕获顺序

把正则改成:

^(.*?)(\d+)(.*?)\.pdf$
  • .*?是非贪婪模式,会尽可能少匹配字符,第一个.*?会停在第一个连续数字的开头,让\d+完整捕获所有连续数字;
  • 捕获组1(.*?)+ 捕获组2(\d+)+ 捕获组3(.*?)就是不带扩展名的完整文件名;
  • 捕获组2直接就是你要的连续数字。

方案2:拆分两步处理(更直观通用)

  1. 先提取不带扩展名的文件名,用正则:
    ^(.*)\.pdf$
    
    捕获组1就是file_1234_test;
  2. 再对这个文件名结果用\d+匹配,直接提取出连续数字1234。

这两种方案都不依赖文件名的固定结构(比如下划线、数字位数),只要文件名里有连续数字、扩展名是.pdf就能适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:52:06