表过滤规则
本文介绍表过滤语法规则。
每条表过滤规则由“库”和“表”组成,两部分之间以英文句号 . 分隔。表名仅支持由以下标识符组成:
- 非 ASCII 字符:U+0080 ~ U+10FFFF
其他 ASCII 字符均为保留字,不允许出现在标识符内。
示例如下:
表名的两个部分均支持使用通配符。
- [a~z]:匹配 "a" 和 "z" 之间的一个字符。
- [!a~z]:匹配不在 "a" 和 "z" 之间的一个字符。
示例如下:
此处,“字符”指的是一个 Unicode 码位,例如:
- U+0065,U+0301 "é" 是 2 个字符。
- U+1F64B U+1F3FB U+200D U+2640 U+FE0F "🙋🏻♀️" 是 5 个字符。
在一条过滤规则的开头加上 !,则表示符合这条规则的表不会纳入同步范围。使用排除规则构建屏蔽名单时,必须先添加 *.* 规则,将全部库表纳入同步范围,后续 ! 排除规则才能从全部库表中剔除指定对象。示例如下:
如果需要将特殊字符转化为标识符,可以在特殊字符前加上反斜杠 \。示例如下:
为了简化语法并向上兼容,不支持下列字符序列:
- 在行尾去除空格后使用 \(使用 [ ] 来匹配行尾的空格)。
- 在 \ 后使用数字或字母 (0~9、a~z、A~Z)。特别是类似 C 的转义序列,如 \0、\r、\n、\t 等序列,目前在表过滤规则中无意义。
除了 \ 之外,还可以用 " 和 ` 来控制特殊字符。示例如下:
也可以通过输入两次引号,将引号包含在标识符内。示例如下:
用引号包裹的标识符不可以跨越多行。
用引号只包裹标识符的一部分是无效的。示例如下:
如果您需要使用较复杂的过滤规则,可以将每个匹配模型写为正则表达式,以 / 为分隔符。示例如下:
这类正则表示使用 Go dialect。只要标识符中有一个子字符串与正则表达式匹配,则视为匹配该模型。例如,/b/ 匹配 db01。 注意
正则表达式中的每一个 / 都需要转义为 \/,包括在 [...] 里面的 /。不允许在 \Q...\E 之间放置一个未转义的 /。
当表的名称与过滤列表中所有规则均不匹配时,默认情况下这些表被忽略。
如果一个表的名称与过滤列表中的多个规则匹配,则以最后匹配的规则为准。例如:
过滤结果如下:
最近更新时间:2026.11.04 16:54:49