📖 正则入门(新手)
本页给完全没写过正则的人。目标不是让你成为正则专家,而是让你能看懂、能改、能验证一条规则,足以应付「一批标题对不上」的情况。
读法建议
不用一次读完。先看第 1 节建立直觉,再跳到第 3 节的范例,复制一条改成你的标题,最后回来看第 4 节的测试方法。
1. 正则是什么
正则(正则表达式)就是用符号描述「一类标题长什么样」。
比如你想表达「所有以『之刃』结尾的标题」,不想把十几部作品一条条列出来。用中文说就是:
开头随便什么内容,然后以「之刃」结束
用正则写就是:
^.*之刃$^ 是「开头」,.* 是「随便什么内容」,之刃 是那几个字,$ 是「结尾」。
就这么简单。 下面所有的东西,都是在学这几个符号的更多变体。
2. 六个最常用的符号
先只记这六个,就够应付大多数情况了:
| 符号 | 读作 | 作用 |
|---|---|---|
^ | 开头 | 要求从这里开始匹配 |
$ | 结尾 | 要求到这里结束 |
. | 任意一个字符 | 占一个位置,是什么都行 |
* | 零个或多个 | 前面的东西可以重复任意次(也可以没有) |
[ ] | 括号里任选一个 | 如 [一二三] 表示「一或二或三」 |
| | 或者 | 左右两边任一满足即可 |
反复看这三个例子
例 A:标题以「之刃」结尾
^.*之刃$拆开看:^ 从头开始 → .* 中间随便 → 之刃 这几个字 → $ 到此结束。
命中:鬼灭之刃 不命中:鬼灭之刃 无限列车篇(因为 $ 要求「之刃」必须是最末尾)
例 B:标题以「之刃」开头
^之刃只要开头是「之刃」就行,后面是什么不管。注意这里没有 $。
例 C:标题里含有「鬼灭」两个字
鬼灭没有 ^ 也没有 $,所以只要任何位置出现「鬼灭」就算命中。这是最宽松的写法。
宽松 = 容易误伤
例 C 会命中所有名字里带「鬼灭」的东西,包括你不想要的衍生作、真人版。越宽松的写法,越要在第 4 节好好测试。
关于 .* 为什么总是成对出现
. 表示「一个字符」,* 表示「重复任意次」。合起来 .* 就是「任意多个字符」。
所以:
^.*之刃$= 开头 → 任意内容 → 之刃 → 结尾 ✅- 单写
^之刃$= 开头 → 紧接着就是之刃 → 立刻结尾 ❌(只能匹配「之刃」这两个字本身)
记住这个模式:^.*关键词$ 表示「以关键词结尾」,^关键词.*$ 表示「以关键词开头」。
3. 照着改就能用的范例
下面每条都可以直接复制,把里面的中文换成你的标题。
想要「以某词结尾」
^.*之刃$想要「以某词开头」(推荐,最常用)
^某番剧这一条特别有用:它能一次覆盖「某番剧 第二季」「某番剧 剧场版」「某番剧 OVA」。
想要「几种叫法都算」
(鬼灭之刃|滅之刃|Kimetsu)用括号和 | 把几种写法括起来,任一出现即命中。
想要「番剧名 + 第几季」,但季号写法不定
^某番剧\s*第[0-9一二三四五六七八九十]+季\s*= 这里可以有空格,也可以没有(\s是空白,*是任意次)[0-9一二三四五六七八九十]+= 一个或多个数字或中文数字(+和*类似,但至少要有 1 个)
更省事的办法
与其在正则里穷举季号写法,不如把正则只写成 ^某番剧,然后使用弹窗里的 「限定季度」 字段来限定第几季。这样正则简单得多,也不容易漏。
想要「忽略大小写」(英文标题)
(?i)^blade of demon slayer(?i) 写在最前面,表示整个表达式不分大小写。
4. 最重要的:先测试再保存
不要凭感觉写正则。 添加/编辑映射的弹窗底部有 「正则匹配测试」,输入标题立刻看到结果。
每次至少测四类:
| 测什么 | 为什么 |
|---|---|
| ✅ 2 个应该命中的真实标题 | 确认规则能用 |
| ❌ 2 个不该命中的相近标题 | 确认没有误伤 —— 这步最容易被跳过,也最重要 |
| ❌ 同系列的其它季 | 确认它们落到了你预期的地方 |
| ❌ 名字里恰好含有关键词的无关番剧 | 宽泛规则的经典翻车点 |
举例:测试 ^鬼灭
- ✅
鬼灭之刃—— 应该命中 - ✅
鬼灭之刃 柱训练篇—— 应该命中 - ❌
鬼灭之刃 真人版—— 如果不想要它,就得把规则改得更具体 - ❌
关于我转生变成史莱姆这档事—— 应该不命中
5. 常见疑问
中文标点要怎么写?
标题里的 ( ) · : 都是普通字符,直接照写即可。如果想「这里有没有都行」,用 . 占位。
例:标题可能是 某番剧(第一季) 也可能是 某番剧(第一季),可写成:
^某番剧.第[一1]季.每个 . 顶掉一个字符位置。
为什么我的规则写对了却没生效?
按顺序检查:
- 是不是前面有更宽泛的规则先命中了? 规则按列表顺序生效,第一条命中的赢。把具体的往上移。
- 是不是已经有一条精确映射了? 精确映射的优先级高于正则。
- 表达式有没有写错? 用测试面板验证;注意中文括号和英文括号不是一回事。
- 限定季度填了没有? 填了就只在那一季生效。
怕写错搞坏现有匹配怎么办?
先导出映射备份(「映射管理」页面有导出按钮),再动手改。出问题直接导入还原。
一条正则想匹配很多部,会不会互相干扰?
每条规则是独立的,只看「顺序」和「是否命中」。所以把具体的放前面、宽泛的放后面,就不会互相干扰。
