Skip to content

自定义制作组 ​

每行一个正则,合并成一条大正则用于发行组识别,供命名模板与权重洗板的发行组评分使用。

制作组识别逐行正则合并匹配

前置条件 ​

  • 已在「文件整理 → 词表 → 制作组」编辑 custom_release_groups。
  • 每行是一个合法正则;空行与 # 注释行会被忽略。
  • 制作组识别发生在名称解析之后,使用的是识别词替换后的标题。

详细规则 ​

匹配流程总览 ​

  1. 读取 custom_release_groups(并合并启用的远端词库),逐行使用,跳过空行与 # 注释。
  2. 所有行用 | 合并成一条大正则(strings.Join(groups, "|"))。
  3. 标题侧:把合并正则包进边界断言 (?i)(?<=[-@\[£【&])(?:<合并正则>)(?=[@.\s\]\[】&]) 做匹配。
  4. 文件侧:对文件名末尾做一次独立提取,正则为 -([A-Za-z][A-Za-z0-9]*(?:@[A-Za-z][A-Za-z0-9]*)*)$(先剥离扩展名)。
  5. 把命中结果按 @ 拆分、去重,最终用 @ 连接为 releaseGroup(如 HHWEB@CHD)。
  6. 需要判断「某组是否在列表里」(订阅筛选等场景)时,用 (?i)^(?:<合并正则>)$ 做整串判定。

合并方式与大小写 ​

  • 一行一个正则;合并是简单 | 连接,不额外包裹捕获组。
  • 匹配默认忽略大小写:代码在合并结果前加了 (?i),无需手写;写了也不会冲突。
  • 每行必须能独立编译为正则,保存时会逐行校验。
  • 行与行之间互相独立,一条覆盖多个写法的正则(如 CMCT[V]?)可以放心使用。

边界断言逐字符解释 ​

匹配原文(<合并正则> 为所有行用 | 连接后的结果):

text
(?i)(?<=[-@\[£【&])(?:<合并正则>)(?=[@.\s\]\[】&])
片段作用
(?i)忽略大小写
(?<=[-@\[£【&])前断言:组名之前必须是 -、@、[、£、【、& 之一
(?:<合并正则>)你的合并列表(每行用 | 连接)
(?=[@.\s\]\[】&])后断言:组名之后必须是 @、.、空白字符、]、[、】、& 之一

要点:

  • 前后都是零宽断言,只要求边界字符存在,不会把边界字符吃掉。
  • \s 覆盖空格、制表符等空白;组名后接空格、换行或文件名中段结束都算合法边界。
  • @ 同时出现在前断言与后断言里,因此 HHWEB@CHD 这类连写会被拆成两次命中,再合并回 HHWEB@CHD。
  • 组名前面没有允许的分隔符时不会命中。

可命中示例(假设列表里有 HHWEB、CHD):

text
Movie.2024.2160p-HHWEB.mkv                 → HHWEB
Movie.2024.2160p@HHWEB.mkv                 → HHWEB
Movie.2024.2160p[HHWEB].mkv                → HHWEB
Movie.2024.2160p【HHWEB】.mkv              → HHWEB
Joy.of.Life.S02E01.2160p-HHWEB@CHD.mkv     → HHWEB@CHD
Movie.2024.2160p-HHWEB&CHD.mkv             → HHWEB@CHD

不会命中的写法:

text
Movie.HHWEB.2024.mkv

HHWEB 前面是 .,不在前断言的字符集合里,因此不会按制作组命中。

命中结果拆分与拼接 ​

  • 命中结果可能包含 @(匹配整段跨过 @ 分隔符时),先按 @ 拆开成单个组名。
  • 拆开后整体去重:同一个组重复出现只保留一次。
  • 最终多个组用 @ 连接输出:HHWEB@CHD、HHWEB@MTeam。

文件层末尾提取 ​

标题边界匹配之外,文件层面还会对文件名末尾做一次独立提取,用于兜住「列表里没写但文件名末尾带 -Group」的情况。

步骤:

  1. 取文件名(含扩展名)。
  2. 先剥离常见视频 / 字幕扩展名。
  3. 对剩余部分应用末尾提取正则 -([A-Za-z][A-Za-z0-9]*(?:@[A-Za-z][A-Za-z0-9]*)*)$。

正则拆解:

片段含义
-组名前的连字符
[A-Za-z][A-Za-z0-9]*组名以英文字母开头,后接英文字母或数字
(?:@[A-Za-z][A-Za-z0-9]*)*允许 @ 连接的多个组,如 HHWEB@CHD
$锚定到剥离扩展名后的文件名末尾

示例:

text
Movie.2024.2160p.WEB-DL.H265-HHWEB.mkv        → HHWEB
Movie.2024.2160p.WEB-DL.H265-HHWEB@CHD.mkv    → HHWEB@CHD
Movie.2024.2160p.WEB-DL.H265-A1B2.mkv         → A1B2

扩展名剥离清单 ​

末尾提取前会先剥掉以下扩展名(不区分大小写):

text
.mkv .mp4 .avi .ts .rmvb .mov .flv .m4v .wmv .mpg .mpeg .m2ts .iso .strm .srt .ass .ssa .sup .3gp .asf .tp .f4v

因此 xxx-HHWEB.mkv 与 xxx-HHWEB.srt 都能提取到 HHWEB。

排除清单 ​

末尾提取会把以下组名(不区分大小写)排除,避免把编码复合后缀误认成制作组:

排除项常见来源
dlWEB-DL
hdDTS-HD 等
maDTS-HD MA
text
Movie.2024.DTS-HD.MA.mkv

以上文件不会把 HD、MA 当成制作组。

整串判定(是否在列表中) ​

除「边界匹配」外,系统还有一个整串判定口径:

text
(?i)^(?:<合并正则>)$

它要求待查字符串从第一个字符到最后一个字符都与合并正则匹配(不是子串包含),且忽略大小写。用于「某个制作组是否属于列表」这类查询场景。

订阅筛选复用 ​

订阅系统的「制作组」筛选项会读取自定义制作组列表。想在订阅里按某个组筛选,建议把它也写进列表:

text
HHWEB
NTb
FLUX
CHD
MTeam

这样订阅筛选、文件整理识别与模板渲染的口径保持一致;否则可能出现「订阅筛选里没有这个组、或命中不到」的情况。

默认列表为空 ​

  • 出厂 custom_release_groups 为空列表(代码常量 DEFAULT_RELEASE_GROUPS = []),不存在「内置大列表」。
  • 列表非空时,它就是主列表;识别来源是「文件末尾提取 + 本列表」两条路径。
  • 想让某个组稳定被识别:把它写进列表(供标题边界匹配与整串判定使用),文件末尾的 -Group 则由末尾提取兜底。

正则写法建议 ​

制作组规则本身是正则,一条即可覆盖多个写法:

写法覆盖结果
CMCT[V]?CMCT、CMCTV
WiKi[A-Z]*WiKi、WiKiHD、WiKiWEB
CHD(Web|TV)?CHD、CHDWeb、CHDTV
MTeam[A-Z]*MTeam、MTeamHD
text
CMCT[V]?
WiKi[A-Z]*
HHWEB
CHD(Web|TV)?
MTeam[A-Z]*

TIP

匹配本身已忽略大小写,一般不必再写 (?i);含连字符的组名(如 Lilith-Raws)按原样书写即可。

校验与排错对照 ​

保存时会逐行做正则编译校验;括号、方括号不闭合等会直接报错。

text
WiKi(        # 校验失败:括号未闭合
WiKi[A-Z]*   # 校验通过
现象原因修正
保存时该行校验失败正则括号、方括号未闭合或转义错误修正该行正则后重试
组名命中不到前 / 后没有合法的边界字符检查文件名分隔符与边界集合
末尾提取失效组名不是英文字母开头,或命中排除清单需要时把该组写进配置列表

排错顺序:

  1. 组名前的分隔符是否为 - @ [ 【 & £ 之一。
  2. 组名后的边界是否为 @ . 空白 ] 【 & 之一(这也是 Movie.HHWEB.2024.mkv 抓不到的原因)。
  3. 末尾提取要求组名以英文字母开头;中文组名、纯数字开头的组名要靠文件名里的分隔符 + 配置列表命中。
  4. 正则是否写得太窄:规则 WiKi 匹配不到 WiKiHD,需要 WiKi[A-Z]*。
  5. 末尾片段是否落在排除清单(dl、hd、ma)里。
  6. 识别到的组名是否被后续的渲染后处理词删掉(用渲染后处理词排查)。

使用流程 ​

  1. 在制作组文本框按行填写制作组正则。
  2. 点「立即校验」检查正则是否可编译。
  3. 点「保存制作组」写盘。
  4. 识别时命中结果会进入发行组字段,用于命名模板 `` 与权重洗板的发行组评分。

常见问题 ​

为什么每行写一个正则,而不是直接写一组名字? ​

TIP

词表按行保存,识别时会把所有行合并为一条 | 连接的正则,因此每行都应是一个独立、合法的正则片段。

制作组会影响权重洗板吗? ​

TIP

会。权重洗板的发行组(releaseGroup)是列表组,命中多个发行组会求和计分;自定义制作组列表决定哪些制作组能被识别出来。

默认有内置制作组吗? ​

TIP

没有。出厂 custom_release_groups 为空列表(DEFAULT_RELEASE_GROUPS = []),识别靠「文件末尾提取 + 本列表」两条路径;只有识别词内置了 4k => 2160p。

不写制作组能不能识别末尾 -Group? ​

TIP

可以。文件末尾的 -GroupName 或 -GroupA@GroupB 会自动提取(字母开头、不在排除清单内),即使没有写进列表。

为什么 DTS-HD MA 没被识别成 HD 或 MA? ​

TIP

末尾提取专门排除了 dl、hd、ma(忽略大小写),避免把编码复合后缀误判成制作组。

制作组支持中文吗? ​

TIP

配置列表支持正则与中文文本,但文件末尾的自动提取只匹配「英文字母开头 + 字母数字」的组名。中文制作组建议写进自定义列表,并确保文件名里有明确分隔符。

可以把制作组改成别的显示名吗? ​

TIP

制作组规则只负责识别,不负责替换显示名。要修改最终文件名里的显示效果,用渲染后处理词。

NanShare 文档站仅说明 NanShare 项目的部署、配置与使用。