正则匹配处理
💡 提示: 本系统已集成AI辅助功能,强烈建议开启AI辅助 ,让AI自动处理文件名解析和匹配,无需手动编写正则表达式。AI能智能识别各种复杂的文件命名格式,大幅降低使用难度。
如果您仍需要手动配置正则表达式,请继续阅读以下内容…
基础概念
正则表达式在本项目中主要用于两个场景:
- 文件名匹配:筛选需要转存的文件
- 文件重命名:统一命名格式
文件名匹配进阶
1. 集数筛选
想要只转存第x集之后的剧集
解析:
- (?<=E):正向肯定后发断言,检查当前位置的前面是否为字符 E,但不将 E 纳入匹配结果。
- \d+:匹配一个或多个连续的数字。
2. 多条件匹配
想要匹配季和集数:
.*(S\d{1,3}E\d{1,3}).*?(\.\w+)$
解析:
- .*:贪婪匹配任意数量(包括零个)的任意字符。
(S\d{1,3}E\d{1,3}):捕获包含季和集数信息的部分,S 后接 1 到 3 个数字表示季数,E 后接 1 到 3 个数字表示集数。
- .*?:非贪婪匹配任意数量(包括零个)的任意字符。
(.\w+):捕获文件扩展名,以点号开头,后接一个或多个单词字符。
- $:匹配字符串的末尾。
实用示例
需求:只转存新更新的集数(>12集)并规范命名
- 文件匹配规则:
示例文件名:“北上 - S01E01 - 第1集.mp4” 从S01E01中匹配出01与12比较, 不满足所以不会转存该资源
- 重命名规则:
- 正则:
.*(S\d{1,3}E\d{1,3}).*?(\.\w+)$
- 替换:
北上.$1$2
示例:- 原始文件名:“北上 - S01E01 - 第1集.mp4”,使用该重命名规则后,会被重命名为 “北上.S01E01.mp4”。
- 此规则不适用于 “北上 - E01 - 第1集.mp4”,因为在文件匹配阶段就会被过滤掉。
- 懒人模式(魔法匹配-来自夸克自动转存)
- 魔法匹配正则:
.*?([Ss]?\d{1,2})?(?:[第EePpXx.\-\_\( ]{1,2}|^)(\d{1,3})(?!\d).*?\.([^.]+)
- 讲解:
$1
为季数,$2
为集数,$3
为文件后缀 - 替换:
北上 - $1E$2 - 第$2集.$3
示例:- 原始文件名:“北上 - S01E01 - 第1集.mp4”,使用该重命名规则后,会被重命名为 “北上 - S01E01 - 第1集.mp4”。
注意: 虽然该正则几乎能够涵盖90%的文件名格式,但仍需根据实际情况进行调整。
调试技巧
- 测试工具
- 推荐使用在线正则测试工具
- 先用小范围文件测试规则
- 确认无误后再应用到批量文件
- 常见错误
- 忘记转义特殊字符(如
.
*
+
等) - 贪婪匹配导致匹配范围过大
- 未考虑文件名中的特殊情况
- 优化建议
- 使用非贪婪匹配
.*?
而不是 .*
- 合理使用分组提高可读性
- 使用零宽断言减少替换复杂度