ADC

正则表达式

如果要执行的字符串匹配操作比使用 INSTAINSINOSTE ("<string>") 或 EQ ("<string>") 运算符执行的操作更复杂,则可以使用正则表达式。Citrix® Citrix ADC® 设备上的策略基础结构包括运算符,您可以将正则表达式作为文本匹配的参数传递给这些运算符。使用正则表达式的运算符的名称包括字符串 REGEX。作为参数传递的正则表达式必须符合"<http://www.pcre.org/pcre.txt>."中描述的正则表达式语法。您可以在 "<http://www.regular-expressions.info/quickstart.html>""<http://www.silverstones.com/thebat/Regex.html>." 上了解与正则表达式有关的更多信息。

使用正则表达式的运算符的目标文本可以是文本或 HTTP 标头的值。下面是使用正则表达式运算符对文本进行操作的默认语法表达式的格式:

<text>.<regex_operator>(re<delimiter><regex_pattern><delimiter>)

字符串 <text> 表示默认语法表达式前缀,用于标识数据包中的文本字符串(例如,HTTP.REQ.URL)。字符串 <regex_operator> 表示正则表达式运算符。正则表达式始终以字符串重开始. 一对匹配的分隔符(由 <delimiter> 表示)将表示正则表达式的字符串 <regex_pattern> 包围起来。

以下示例表达式检查 HTTP 数据包中的 URL 是否包含字符串 *.jpeg(其中 * 是通配符),并返回布尔值 TRUE 或 FALSE 来指示结果。正则表达式被包含在一对斜杠标记 (/) 中,它们充当分隔符。

http.req.url.regex_match(re/.<asterisk>\.jpeg/)

可以组合正则表达式运算符来定义或优化搜索的范围。例如,<text>.AFTER_REGEX(reregex_pattern1).BEFORE_REGEX(reregex_pattern2) 指定字符串匹配的目标是模式 regex_pattern1 与 regex_pattern2 之间的文本。您可以在由正则表达式运算符定义的范围上使用文本运算符。例如,您可以使用 INSTANCE ("<string>") 运算符检查定义的范围是否包含字符串 abc:

<text>.AFTER_REGEX(re/regex_pattern1).BEFORE_REGEX(re/regex_pattern2/).CONTAINS("abc")

注意

评估正则表达式的过程本质上比使用简单字符串参数的运算符(例如 CONTAINS ("<string>") 或 EQ("<string>"))花费更多的时间。只有当您的要求超出了其他运算符的范围时,才应使用正则表达式。

正则表达式