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

Python正则:匹配列表中指定数字在第二个下划线至.tif间的路径

正则表达式匹配指定数字的文件路径解决方案

问题背景

现有文件路径列表:

list_paths=imgs/foldeer/img_ABC_21389_1.tif.tif,
imgs/foldeer/img_ABC_15431_10.tif.tif,
imgs/foldeer/img_GHC_561321_2.tif.tif,
imgs_foldeer/img_BCL_871125_21.tif.tif,
...

需求:遍历路径列表,匹配指定数字单独出现在第一个.tif前、且被下划线和小数点包围的完整路径。例如:

  • 指定数字1时,仅匹配imgs/foldeer/img_ABC_21389_1.tif.tif
  • 指定数字2时,仅匹配imgs/foldeer/img_GHC_561321_2.tif.tif

此前尝试的正则[^_]+\.[^_]+\_([0-9])无匹配结果,还会误匹配包含目标数字的多位数(比如指定1时命中10)。

正确正则方案

针对指定数字N,使用以下正则表达式:

^.*_{N}\.tif\.tif$

正则解释

  • ^:锚定字符串开头,确保匹配完整路径
  • .*:匹配路径前缀的任意内容,适配不同目录结构
  • _{N}\.:精确匹配_N.(N为指定数字,.需转义避免被当作通配符),确保目标数字是单独的部分,不会匹配包含该数字的多位数
  • tif\.tif$:锚定字符串结尾,确保路径以.tif.tif结束

示例验证

  • 指定数字1时,正则为^.*_1\.tif\.tif$,仅匹配imgs/foldeer/img_ABC_21389_1.tif.tif,排除imgs/foldeer/img_ABC_15431_10.tif.tif
  • 指定数字2时,正则为^.*_2\.tif\.tif$,仅匹配imgs/foldeer/img_GHC_561321_2.tif.tif,排除imgs_foldeer/img_BCL_871125_21.tif.tif

原正则问题分析

之前的正则[^_]+\.[^_]+\_([0-9])存在两个核心问题:

  1. 匹配结构与实际路径不契合,无法覆盖完整路径的前缀部分,导致无匹配结果
  2. 仅匹配单个数字但未限制数字的前后边界,会误匹配包含目标数字的多位数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:40:23