酒馆正则表达式教程:从入门到实战的完整指南

酒馆正则表达式教程:从入门到实战的完整指南

酒馆正则表达式教程:从入门到实战的完整指南

Contents

酒馆正则是一种自动执行的查找替换规则,可折叠思考链、清除 OOC 旁注、把状态标记美化为可视界面。本教程从原理、执行时机、深度控制到测试工具完整讲解,零基础可上手,也适合进阶调试。

简介

这篇教程教你如何在 SillyTavern(俗称「酒馆」)及兼容酒馆正则语义的平台中创建、调试和使用正则规则,把模型输出的原始文本按你的需要折叠、隐藏、替换或美化。适合刚导入带正则角色卡的新手,也适合想自行编写或调试复杂规则的进阶玩家。

前置准备

开始之前,请确认以下环境与工具就绪:

不要求会写脚本;普通玩家日常就是从模板起步,改几个变量就能跑。

分步教程

步骤 1:先分清三档「执行时机」

这是第一次接触酒馆正则时最该先搞清的一件事。不同界面会把它做成「两个复选框」或「三档下拉」,本质相同:

执行时机你屏幕看到的模型下一轮看到的聊天文件存的可撤销
双向(双向显示+提示词,两个复选框都开)已替换已替换已替换不可逆
仅显示(不改提示词)已替换原始文本原始文本关掉规则即恢复
仅提示词(不改显示)原始文本已替换原始文本关掉规则即恢复

注意点:美化类正则(把 <status> 替换成带花边的状态栏)走的是「仅显示」,不会污染聊天记录,也不额外消耗 token;删除思考链或清理 OOC 通常走「双向」,改动是永久的、没有撤销键。所以第一次编辑规则时,先在管理页确认它落在哪一档。

不同界面表述略有差异:Foreverse 教程用「双向 / 仅显示 / 仅提示词」三档,小酒窝教程用「短暂 + 仅格式显示 + 仅格式提示词」的组合表达。两者不是冲突,把「两个复选框同时开」对应到「双向」即可。看实际落盘的字段名比死记标签更可靠。

步骤 2:新建第一条正则

以「隐藏状态栏」为例,这是小酒窝教程和 TavernWeave 教程都示范过的入门场景。假设模型稳定输出:

<status>
地点:学生会办公室
时间:14:30
</status>
  1. 打开全局正则管理页(SillyTavern 路径:设置 → 角色卡与酒馆 → 酒馆全局设置 → 「预设 / 正则 / 宏」→ 管理全局正则)。
  2. 点「新建正则」。
  3. 查找正则表达式填:/<status>[\s\S]*?<\/status>/gm(匹配 <status>...</status> 整段,非贪婪)。
  4. 替换为留空——留空即删除命中内容。
  5. 勾选「仅显示」档,回到聊天即可看到状态栏只在 UI 层被隐藏,记录原样保留。

关键注意点:[\s\S] 是为了跨行匹配;*? 而非 * 是为了非贪婪,避免把连续多个状态块当成一个大块。

步骤 3:理解「作用范围」与「深度」

酒馆正则的第二层控制是「谁的消息被处理」和「第几楼开始处理」:

注意点:深度数值是「从当前最新一层往回倒数」,聊天楼层不同,门槛楼层会随之移动。GrayWill-ST 仓库在 v0.40 更新里明确提到过旧正则的「生效层数」有过 bug,并升级到新版本酒馆配套正则修复,说明深度逻辑有一定版本敏感性,排障时要先核对版本。

步骤 4:用宏和转义模式处理动态变量

如果你要写通用规则(而非只作用于一张卡),文字里会不可避免地出现 {{user}}、{{char}}:

这些能力来自 AIO Hub 的文本处理文档,语义与主流酒馆前端一致。

步骤 5:借助模板与测试沙箱

不想从零写正则时,编辑器通常内建以下工具:

关键注意点:脚本处理会引入额外执行能力,导入带脚本的预设时,宿主通常会自动执行「风险扫描」。看到警告不要直接忽略,检查它实际访问了哪些变量。

步骤 6:掌握优先级与预设管理

步骤 7:区分正则与脚本的适用场景

很多「正则写不出效果」的问题,根源其实是工具选错。对照下表判断:

你想完成的事推荐工具原因
匹配、隐藏、提取、清理、简单替换正则纯文本处理,正则最短路径
判别、变量、持久化、异步请求、监听酒馆助手脚本需要程序逻辑与生命周期
文本变交互(如 <choice> 变可点击按钮)正则 + 脚本正则先出结构,脚本再绑定事件
从已有变量渲染面板脚本数据已在变量里,不必再让模型重抄

TavernWeave 教程给出的口诀是:「找出来、藏起来、换个样子 → 正则;点了以后做事、数据变化后刷新、失败后反馈 → 脚本;模型输出要变成可交互界面 → 正则 + 脚本」。这条口诀只是入门判断,结构化 JSON 也可以直接交给脚本解析,不必为了省几行代码强行塞给正则。

另一个重要原则:显示层和真实数据要分层。例如变量卡要求模型输出 <UpdateVariable>...</UpdateVariable> 供变量系统解析,你可以用「仅显示」正则把它对玩家隐藏——但不能使用「双向」在写盘前删掉,否则页面干净了,变量却不再更新。这一点在小酒窝教程和 TavernWeave 教程中都被反复强调。

常见问题排查

先按「现象」反查「常见原因」,再决定改哪一层:

现象常见原因
页面看得到,但按钮点不动正则只生成了 HTML,没有脚本绑定点击事件
按钮第一次有效,刷新后失效只在首次加载时绑定,未重新处理渲染
点击一次执行多次监听器重复注册,或缺少执行锁
状态栏一直显示旧数据只初始化读取一次,未监听变量变化
正则把正文也隐藏了匹配范围过大或边界不明确
变量更新突然失效正则破坏了更新块,或执行顺序不对
UI 变了,刷新后恢复只改了 DOM,没写回真实状态
变量已变化,UI 没变写入成功,但没有重新读取与渲染

另一类高频卡点是**「明明改好了,模型下一轮却按旧文本继续」**——这多半是因为规则处于「仅显示」档,屏幕看着改了,模型根本没收到。检查该条规则卡片上的「执行时机」标签即可。

还有一条经验:如果一条正则越写越长、不断增加分支,先回头统一输入格式(让模型用固定标签包裹),而不是继续在正则里堆条件。

FAQ

Q:酒馆正则和 SillyTavern 正则是同一个东西吗? A:语义基本一致。SillyTavern 是官方桌面宿主,AIO Hub、各移动端酒馆也沿用同一套「作用位置 + 执行时机 + $1/{{match}} 引用 + 深度范围」的约定。文件层面,AIO Hub 自带原生 JSON 与 SillyTavern 预设两种导入导出,可以直接互换。

Q:导入带正则的角色卡,会不会乱改我的聊天记录? A:美化类规则通常走「仅显示」,只替换渲染层,聊天文件里存的仍是模型原话,HTML 模板也不占 token。会永久改动记录的是「双向」档——替换发生在写盘之前,没有撤销键。在全局正则页扫一眼每条规则的时机标签,就能知道谁会动记录。

Q:正则写坏了会把聊天弄崩吗? A:不至于崩。最坏情况是显示被替换成空,渲染侧通常有兜底会回退显示原文,不会白屏,也不会吞协议正文。修复路径是回管理页把嫌疑规则关掉——「仅显示」档的错误不碰记录,关掉即恢复。真正要小心的是「双向」档。

Q:深度设成 4 是什么意思?为什么 96 楼的状态栏没了、100 楼的还在? A:这是小酒窝教程示范过的典型场景。当「最小深度 = 4」时,规则只在第 4 楼及更早生效(即倒数第 5 层往前),最近 4 层被保留。如果你的聊天当前最后一层是 100 楼,那么 96 楼被清、97–100 楼保留——这就是「不发送 4 楼外状态栏」的实际表现。

Q:$1、$2 和 {{match}} 有什么区别? A:$1、$2 是正则捕获组的反向引用(对应模式中第几个括号分组),{{match}} 引用整个命中片段。二者常与宏 {{user}}、{{char}} 组合使用。

Q:正则和酒馆助手脚本到底该用哪个? A:看你要完成的事。只做文本匹配、隐藏、替换、清理 → 正则;需要判别、变量、持久化、异步请求、UI 事件 → 脚本;「文本变可交互界面」需要两者配合。参见上文对比表。

Q:从别人那里拿到的正则 JSON,怎么确认它安全? A:先看内容——导入前用纯文本打开 JSON,确认没有 script 字段或可疑的 JS 片段;宿主在导入带脚本能力的规则时通常会做风险扫描,看到警告不要跳过。宁可先只开「仅显示」档试跑,确认无误再切换到「双向」。

Q:能一键导出「读者视角」看到的效果吗? A:可以。⋮ 菜单的高级区通常有「导出可读文本(正则后)」,导出的就是替换后的显示态,比截图分享更方便。部分教程提到的网页版酒馆正则测试器也能离线做替换前后对照。

Q:为什么我看别人分享的正则规则编号和预设对不上? A:不同的预设包会自带自己的优先级编号体系(默认 100 起步),模块化预设(如 GrayWill-ST)还要求「隐藏攻击正则 + 酒馆助手脚本」配套安装才能正常跑 meta 功能。逐条按名称或查找串搜索,比按编号硬对更可靠。

CTA

想要一份能直接跑起来、涵盖思考链折叠 / OOC 清理 / 状态栏美化的正则预设作为对照参考,可以先到 tuniang.ai 看看;上面的模板都可以单独关掉、逐条拆解,不影响你已经调好的规则。

Sources