如何用Regex匹配文件序列中文件名末尾的帧编号?
解决方案:从文件名末尾提取最后一组数字作为帧编号
完全可以实现,核心思路是从文件名末尾反向定位,匹配扩展名前的第一组连续数字,不管文件名前面有多少其他数字,也兼容任意长度的帧号和不同扩展名。
核心正则表达式
(\d+)\.[^.]+$
正则说明
(\d+):捕获任意长度的连续数字(保留前导零,这就是目标帧编号)\.:匹配文件名中的最后一个点(分隔文件名主体与扩展名)[^.]+:匹配扩展名部分(任意非点字符,覆盖jpg、png、jpeg、exr等所有常见扩展名)$:锚定到字符串末尾,确保匹配的是最后一组数字
示例验证
针对你给出的文件序列render1frame0001.png到render1frame0200.png,用该正则匹配时:
- 捕获组会精准提取
0001、0002……0200,完全忽略前面的1 - 遇到
shot_abc789_00123.jpeg这类文件名,能提取00123 - 扩展名换成
.tiff、.mov也能正常匹配
代码示例(以Python为例)
如果用Python处理文件列表,可参考以下代码:
import re file_list = [ "render1frame0001.png", "render1frame0002.png", "shot_abc789_00123.jpeg", "file.0045.tiff" ] for filename in file_list: match = re.search(r'(\d+)\.[^.]+$', filename) if match: frame_num = match.group(1) print(f"{filename} -> 帧编号:{frame_num}")
运行输出:
render1frame0001.png -> 帧编号:0001 render1frame0002.png -> 帧编号:0002 shot_abc789_00123.jpeg -> 帧编号:00123 file.0045.tiff -> 帧编号:0045
特殊场景适配
如果遇到无扩展名的文件名(比如render1frame0001),可将正则调整为(\d+)$,直接匹配字符串末尾的连续数字,同样满足需求。
内容的提问来源于stack exchange,提问作者Ferinix
相关产品推荐
相关产品推荐

