ADC

正则表达式的操作

下表介绍了使用正则表达式的运算符。正则表达式运算符在给定的高级策略表达式中执行的操作取决于表达式前缀是标识文本还是 HTTP 标头。计算标头的操作会覆盖指定标头类型的所有实例的任何基于文本的操作。使用运算符时,请将 <text> 替换为要配置用于识别文本的高级策略表达式前缀。

正则表达式操作 说明
.BEFORE_REGEX() 选择与 参数匹配的字符串之前的文本。如果正则表达式与目标中的任何数据都不匹配,则表达式将返回长度为 0 的文本对象。以下表达式从“文本/普通”中选择字符串“text”。http.res.header (“内容类型”) .before_regex (re#/#)
.AFTER_REGEX() 选择与 参数匹配的字符串后面的文本。如果正则表达式与目标中的任何文本都不匹配,则表达式将返回长度为 0 的文本对象。以下表达式从“myExample”中提取“示例”:http.req.header (“etag”) .after_regex (re/my/)
.REGEX_SELECT() 选择与 参数匹配的字符串。如果正则表达式与目标不匹配,则返回长度为 0 的文本对象。以下示例从 Via 标头中提取字符串“NS-CACHE-9.0: 90”:http.req.header("via").regex_select(re!NS-CACHE-d.d:s*d{1,3}!)
.REGEX_MATCH() 如果目标匹配不超过 1499 个字符的 参数,则返回 TRUE。正则表达式必须采用以下格式:reregular expression< delimiter> 分隔符必须相同。此外,正则表达式必须符合 Perl 兼容 (PCRE) 正则表达式库语法。有关更多信息,请转到 http://www.pcre.org/pcre.txt。特别是,请参阅 pcrepattern 手册页。但是,请注意以下事项:不允许反向引用。不建议使用递归正则表达式。点元字符也匹配换行符。不支持 Unicode 字符集。SET_TEXT_MODE(IGNORECASE) 覆盖 (?i) 在正则表达式中指定的内部选项。*下面是示例:http.req.hostname.regex_match(re/[[:alpha:]]+(abc){2,3}/) and http.req.url.set_text_mode(urlencoded).regex_match(re#(a*b+c)# 下例匹配 ab 和 aB:http.req.url.regex_match(re/a(?i)b/) 下例匹配 ab、aB、Ab 和 AB: 下例执行不区分大小写的多行匹配,其中点元字符也与换行符匹配:http.req.body.regex_match(re/(?ixm) (^ab (.*) cd$) /)
正则表达式的操作