正则表达式匹配器 (proto)

type.matcher.v3.RegexMatcher

[type.matcher.v3.RegexMatcher proto]

专为在使用不可信输入时确保安全而设计的正则表达式匹配器。

{
  "google_re2": {...},
  "regex": ...
}
google_re2

(type.matcher.v3.RegexMatcher.GoogleRE2) 谷歌的 RE2 正则表达式引擎。

regex

(string, REQUIRED) 正则表达式匹配字符串。该字符串必须受配置的引擎支持。正则表达式与整个字符串匹配,而不是部分匹配。

type.matcher.v3.RegexMatcher.GoogleRE2

[type.matcher.v3.RegexMatcher.GoogleRE2 proto]

谷歌的 RE2 正则表达式引擎。正则表达式字符串必须符合记录的 语法。该引擎旨在以线性时间完成执行,并限制使用的内存量。

Envoy 通过运行时支持程序大小检查。运行时键 re2.max_program_size.error_levelre2.max_program_size.warn_level 可以设置为整数作为已编译正则表达式在抛出异常或记录警告之前可以具有的最大程序大小或复杂度,分别。 re2.max_program_size.error_level 默认值为 100,而 re2.max_program_size.warn_level 如果未设置则没有默认值(不会检查/记录警告)。

Envoy 发出两个统计信息来跟踪正则表达式的程序大小:直方图 re2.program_size,它记录程序大小,以及计数器 re2.exceeded_warn_level,它在程序大小超过警告级别阈值时递增。

{
  "max_program_size": {...}
}
max_program_size

(UInt32Value) 此字段控制 RE2 的“程序大小”,它是对已编译正则表达式的复杂程度进行粗略估计。程序大小大于配置值的正则表达式将无法编译。在这种情况下,可以增加配置的最大程序大小或简化正则表达式。如果未指定,则默认为 100。

此字段已弃用;正则表达式验证应在管理服务器上执行,而不是由每个单独的客户端执行。

注意

尽管此字段已弃用,但程序大小仍将针对全局 re2.max_program_size.error_level 运行时值进行检查。

type.matcher.v3.RegexMatchAndSubstitute

[type.matcher.v3.RegexMatchAndSubstitute proto]

描述如何匹配字符串,然后使用正则表达式和替换字符串生成新字符串。

{
  "pattern": {...},
  "substitution": ...
}
pattern

(type.matcher.v3.RegexMatcher, REQUIRED) 用于查找应替换的字符串(以下称为“主题字符串”)部分的正则表达式。在替换操作期间生成新字符串时,新字符串最初与主题字符串相同,但随后主题字符串中的所有匹配项都被替换字符串替换。如果不需要替换所有匹配项,可以使用正则表达式锚点来确保单个匹配,以便只替换模式的一次出现。捕获组可以在模式中使用来提取主题字符串的部分,然后在替换字符串中引用它们。

substitution

(string) 在替换操作期间应替换到主题字符串的匹配部分中的字符串,以生成新字符串。模式中的捕获组可以在替换字符串中引用。但是请注意,引用捕获组的语法由选择的正则表达式引擎定义。谷歌的 RE2 正则表达式引擎使用反斜杠后跟捕获组编号来表示编号捕获组。例如,\1 指的是捕获组 1,而 \2 指的是捕获组 2。