-
Notifications
You must be signed in to change notification settings - Fork 405
魔法匹配和魔法变量
Cp0204 edited this page Sep 1, 2025
·
17 revisions
在正则处理中,我们定义了一些“魔法匹配”模式,如果 表达式 的值以 $ 开头且 替换式 留空,程序将自动使用预设的正则表达式进行匹配和替换。
以下是一个内置示例:
"magic_regex": {
"$TV": {
"pattern": ".*?(?<!\\d)([Ss]\\d{1,2})?([Ee]?[Pp]?[Xx]?\\d{1,3})(?!\\d).*?\\.(mp4|mkv)",
"replace": "\\1\\2.\\3"
}
}如果填入 $TV ,这将使用对应的正则表达式,这个表达式可以自动适配和整理市面上 90%分享剧集的文件名格式。
其中分为三个编组:
-
([Ss]\\d{1,2})捕获季,替换中使用\1引用 -
([Ee]?[Pp]?[Xx]?\\d{1,3})捕获集数,替换中使用\2引用 -
(mp4|mkv)捕获后缀,替换中使用\3引用
你可以在 WebUI 中自定义魔法匹配规则。
v0.6.0+ 版本开始支持
在正则替换表达式中,我们支持使用一系列 {} 变量,我称之为“魔法变量”,这使得在替换时可以更灵活地插入相关内容。
也就是说,正则匹配式可以不用填(也可以填写用来匹配和过滤,不冲突),直接在替换式填变量,就可以比较智能地命名。
例如 {TASKNAME}.{SXX}E{E}.{EXT} → 黑镜.S01E01.mp4
| 变量 | 描述 | 示例值 |
|---|---|---|
{TASKNAME} |
任务名称,从任务配置中获取 | |
{II} |
排序序号,几个 I 即几位数,替换后命名中要有规律字符以供排序 |
01 02 001 002
|
{EXT} |
文件扩展名,从文件名中提取 |
txt mp4 jpg
|
{CHINESE} |
两个或以上中文汉字,从文件名中捕获 |
黑镜 奔跑吧
|
{DATE} |
日期,从文件名中捕获,格式化后输出 YYYYMMDD | 20231026 |
{YEAR} |
匹配年份,从文件名中捕获 |
1874 2025
|
{S} |
季数字,从文件名中捕获 |
01 02
|
{SXX} |
含 S 的季字符串,从文件名中捕获,如无捕获则为 S01 |
S01 S02
|
{E} |
集数字,从文件名中捕获 |
1 01 123
|
{PART} |
"上/中/下" 或者 "一/二/三/...十" 等表示部分的字符 |
上 下 一 十
|
{VER} |
"版" 结尾的中文字符,从文件名中捕获 |
高清版 完整版
|
- 如果匹配式中填了内容,需要把整个文件名匹配全,否则只替换匹配的部分
案例1:源文件名
AAA.S02E03.HQ.mp4想筛选出含 HQ 的,匹配式填HQ替换式填{SXX}E{E}.{EXT}将会变成 AAA.S02E03.S02E03.mp4.mp4
因为只有 HQ 替换成了 {SXX}E{E}.{EXT} ,应该前后加入.*?把前后的字符也匹配上,如:.*?HQ.*? -
{II}模式需要文件列表完整、匹配式中筛选仅需的文件、加入可排序的字符,例如日期、集数,才会有比较好的效果 -
{CHINESE}只匹配第一次出现的两个以上中文汉字,如果用作电影或剧集名,不一定符合期望,建议用{TASKNAME} - 原
$TASKNAME已弃用,改用{TASKNAME},升级0.6.0后任务参数的替换式应该会自动处理好,魔法匹配中需要自行处理
-
任务名称:
黑镜 -
匹配式:
.*?(mp4|mkv)(筛选出视频文件) -
替换式:
{TASKNAME}.{SXX}E{E}.{EXT} -
替换效果:
黑镜.S01E01.mp4
-
任务名称:
奔跑吧 -
匹配式:
^(?!.*纯享)(?!.*加更)(?!.*超前企划)(?!.*训练室)(?!.*蒸蒸日上)(?!.*抢先看).*?(第\d+期).*-
(?!.*纯享)为过滤词,可以叠加 -
(第\d+期)为筛选词,作用匹配出带“第xx期”的文件,只有这部分文件参与{II}的排序
-
-
替换式:
{TASKNAME}.{SXX}E{II}.\1{PART}.{EXT} -
替换效果:
奔跑吧.S01E01.第6期上.mp4