深色模式
自定义捕获词
自定义捕获词用于从文件名中提取额外信息,写入重命名模板变量。它适合保留解析器没有固定字段的内容,例如版本标签、特殊片源标记、剪辑版本、字幕版本、来源组合等。
执行位置:
text
识别词预处理后的标题 -> 自定义捕获词 -> meta.custom_capture / meta._extra_captures -> 重命名模板默认字段:
jinja
{{ customCapture }}命名变量:
jinja
{{ editionTag }}
{{ sourceTags }}
{{ cutVersion }}基本规则
- 一行一条规则。
#开头为注释。- 支持正则表达式。
- 默认区分大小写。
- 忽略大小写请使用
(?i)。 - 没有命名变量时,写入默认字段
customCapture。 - 使用
>> 变量名可写入自定义模板变量。 - 多个匹配结果会去重后拼接。
- 默认拼接符是
@。
纯正则
只写正则时,匹配文本会写入默认字段 customCapture。
text
IMAX
REMUX
Director's Cut输入:
text
Dune.Part.Two.2024.IMAX.2160p.WEB-DL.mkv捕获结果:
text
customCapture = IMAX模板:
jinja
{{ customCapture }}输出:
text
IMAX更多示例:
text
(?i)IMAX
(?i)REMUX
(?i)Director'?s[ ._-]?Cut
(?i)Extended[ ._-]?Cut
(?i)Theatrical[ ._-]?Cut命名捕获
格式:
text
正则 >> 变量名示例:
text
(?i)(IMAX|REMUX|UHD) >> editionTag
(?i)(Director'?s Cut|Extended Cut|Theatrical Cut) >> cutVersion
(?i)(Atmos|DTS-HD MA|TrueHD) >> audioTag模板:
jinja
{{ editionTag }}
{{ cutVersion }}
{{ audioTag }}输入:
text
Dune.Part.Two.2024.IMAX.2160p.TrueHD.Atmos-GROUP.mkv结果可能是:
text
editionTag = IMAX
audioTag = TrueHD@Atmos命名变量会注入到重命名模板上下文。变量名建议使用英文字母、数字和下划线,例如:
text
editionTag
sourceTags
cutVersion
animeTag不要使用已有模板字段名,例如 title、year、releaseGroup。如果命名变量和已有字段重名,NanShare 不会覆盖已有字段。
条件替换
格式:
text
正则 >> 变量名 => 替换值匹配成功后,不使用匹配文本,而是写入固定替换值。
示例:
text
(?i)REMUX >> qualityTag => BluRay.REMUX
(?i)WEB[-_. ]?DL >> sourceType => WEB-DL
(?i)BDRip >> sourceType => BluRay输入:
text
Movie.2024.2160p.REMUX.TrueHD.mkv结果:
text
qualityTag = BluRay.REMUX条件替换适合统一不同写法:
text
(?i)IMAX Enhanced >> editionTag => IMAX
(?i)IMAX-?E >> editionTag => IMAX
(?i)Directors? Cut >> cutVersion => Director's Cut
(?i)Extended Edition >> cutVersion => Extended Cut自定义分隔符
格式:
text
正则 >> 变量名 @分隔符默认分隔符是 @。如果希望多个匹配值用逗号、点号、短横线拼接,可以指定分隔符。
示例:
text
(?i)(IMAX|REMUX|UHD) >> editionTags @.
(?i)(Atmos|TrueHD|DTS-HD MA) >> audioTags @+
(?i)(Hardsub|CHS|CHT) >> subtitleTags @,输入:
text
Movie.2024.IMAX.REMUX.TrueHD.Atmos.CHS.mkv结果:
text
editionTags = IMAX.REMUX
audioTags = TrueHD+Atmos
subtitleTags = CHS默认字段也可以用多个纯正则累计,默认用 @ 拼接:
text
IMAX
REMUX
Atmos结果:
text
customCapture = IMAX@REMUX@Atmos捕获组
如果正则里有捕获组,NanShare 会取第一个非空捕获组作为值。
示例:
text
(?i)(IMAX|REMUX|UHD) >> editionTag输入:
text
Movie.2024.IMAX.2160p.mkv结果:
text
editionTag = IMAX多个捕获组:
text
(?i)(HDR10\+)|(HDR10)|(DV) >> effectTag命中 HDR10 时会取第一个非空捕获组。
如果不写捕获组,则使用完整匹配文本:
text
(?i)Director'?s[ ._-]?Cut >> cutVersion多值去重
同一个变量多次命中时,会去重。
text
(?i)(IMAX|REMUX|IMAX) >> editionTag输入:
text
Movie.IMAX.REMUX.IMAX.mkv结果:
text
editionTag = IMAX@REMUX相同文本不会重复追加。
常见用途
版本标签
text
(?i)(IMAX|REMUX|UHD|Criterion) >> editionTag
(?i)(Director'?s Cut|Extended Cut|Theatrical Cut|Unrated) >> cutVersion模板:
jinja
{{ editionTag }}.{{ cutVersion }}字幕标签
text
(?i)(CHS|CHT|CHS&CHT|简中|繁中) >> subtitleTag
(?i)(Hardsub|Softsub|内封|外挂) >> subtitleMode动漫发布标签
text
\[(ANi|Lilith-Raws|NC-Raws|LoliHouse)\] >> animeSource
\[(Baha|CR|WEB-DL)\] >> animePlatform
\[(1080p|2160p)\] >> animePix特效和音频补充
text
(?i)(DV|DoVi|Dolby Vision) >> effectTag => DV
(?i)(HDR10\+|HDR10|HLG) >> effectTag
(?i)(Atmos|TrueHD|DTS-HD MA|FLAC) >> audioTag自定义来源标记
webSource 是 NanShare 内置解析字段,不是可手动维护的词表。如果你只是想保留文件名中的特殊来源标记,可以用捕获词写到自己的变量里。
text
(?i)(WEB-DL|WEBRip|BluRay|REMUX) >> sourceTag模板:
jinja
{{ sourceTag }}这不会改变内置 webSource 识别逻辑,只是把命中的文本保存到你自定义的 sourceTag。
完整配置示例
text
# ===== 默认字段 customCapture =====
(?i)IMAX
(?i)REMUX
(?i)Criterion
# ===== 命名变量:版本 =====
(?i)(IMAX|UHD|REMUX) >> editionTag @.
(?i)(Director'?s Cut|Extended Cut|Theatrical Cut|Unrated) >> cutVersion
# ===== 命名变量:字幕 =====
(?i)(CHS|CHT|CHS&CHT|简中|繁中) >> subtitleTag
(?i)(Hardsub|Softsub|内封|外挂) >> subtitleMode
# ===== 条件替换:统一写法 =====
(?i)IMAX Enhanced >> editionTag => IMAX
(?i)Directors? Cut >> cutVersion => Director's Cut
(?i)WEB[-_. ]?DL >> sourceType => WEB-DL
# ===== 自定义分隔符 =====
(?i)(Atmos|TrueHD|DTS-HD MA|FLAC) >> audioTags @+模板示例:
jinja
{{title}} ({{year}})/{{en_title}}.{{year}}.{{editionTag}}.{{cutVersion}}.{{sourceType}}.{{audioTags}}-{{releaseGroup}}{{fileExt}}与制作组的区别
制作组用于识别发布组,写入:
jinja
{{ releaseGroup }}捕获词用于提取你自定义的额外字段,写入:
jinja
{{ customCapture }}
{{ editionTag }}
{{ cutVersion }}如果内容本质是压制组或字幕组,优先写到自定义制作组。如果内容是版本、来源、剪辑、字幕模式、特殊标签,优先用捕获词。
与渲染后处理词的区别
捕获词处理的是原始标题中的信息,目标是“提取变量”。
渲染后处理词处理的是最终文件名,目标是“清理结果”。
例如:
text
(?i)IMAX >> editionTag这是捕获变量。
text
\.{2,} => .这是清理最终文件名。
校验与排错
后台会校验捕获词正则是否能编译。
常见错误:
text
(IMAX|REMUX >> editionTag括号未闭合,应该写成:
text
(IMAX|REMUX) >> editionTag捕获不到时,检查:
- 文件名是否经过识别词预处理后改变了。
- 正则大小写是否匹配,必要时加
(?i)。 >>、=>、@的空格是否正确。- 是否把字段写进模板。
- 命名变量是否和已有模板字段重名。
FAQ
只写 IMAX 会写到哪里
写入默认字段 customCapture。
text
IMAX模板中用:
jinja
{{ customCapture }}>> platform 是不是会改变 webSource
不会。它只是创建一个名为 platform 的自定义模板变量。
一个变量能匹配多个规则吗
可以。同名变量会累计多个命中值,并按分隔符拼接。
text
(?i)IMAX >> tags
(?i)REMUX >> tags结果:
text
tags = IMAX@REMUX怎么指定多个值用点号拼接
text
(?i)(IMAX|REMUX|UHD) >> tags @.结果:
text
IMAX.REMUX条件替换能不能引用捕获组
当前实现里的 => 替换值 是固定写入值,不做捕获组替换。需要保留匹配文本时,不要写 =>。