正则匹配处理

💡 提示: 本系统已集成AI辅助功能,强烈建议开启AI辅助 ,让AI自动处理文件名解析和匹配,无需手动编写正则表达式。AI能智能识别各种复杂的文件命名格式,大幅降低使用难度。

如果您仍需要手动配置正则表达式,请继续阅读以下内容…

基础概念

正则表达式在本项目中主要用于两个场景:

  1. 文件名匹配:筛选需要转存的文件
  2. 文件重命名:统一命名格式

文件名匹配进阶

1. 集数筛选

想要只转存第x集之后的剧集

(?<=E)\d+

解析:

  • (?<=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集)并规范命名

  1. 文件匹配规则:
(?<=E)\d+

示例文件名:“北上 - S01E01 - 第1集.mp4” 从S01E01中匹配出01与12比较, 不满足所以不会转存该资源

  1. 重命名规则:
  • 正则:.*(S\d{1,3}E\d{1,3}).*?(\.\w+)$
  • 替换:北上.$1$2 示例:
    • 原始文件名:“北上 - S01E01 - 第1集.mp4”,使用该重命名规则后,会被重命名为 “北上.S01E01.mp4”。
    • 此规则不适用于 “北上 - E01 - 第1集.mp4”,因为在文件匹配阶段就会被过滤掉。
  1. 懒人模式(魔法匹配-来自夸克自动转存)
  • 魔法匹配正则: .*?([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%的文件名格式,但仍需根据实际情况进行调整。

调试技巧

  1. 测试工具
    • 推荐使用在线正则测试工具
    • 先用小范围文件测试规则
    • 确认无误后再应用到批量文件
  2. 常见错误
    • 忘记转义特殊字符(如 . * + 等)
    • 贪婪匹配导致匹配范围过大
    • 未考虑文件名中的特殊情况
  3. 优化建议
    • 使用非贪婪匹配 .*? 而不是 .*
    • 合理使用分组提高可读性
    • 使用零宽断言减少替换复杂度