ADC

正则表达式

如果要执行比使用 CONCONSTING ("<string>") 或 EQ ("<string>") 运算符执行的操作更复杂的字符串匹配操作时,可以使用正则表达式。Citrix® NetScaler® 设备上的策略基础架构包括运算符,您可以将正则表达式作为文本匹配的参数传递给这些运算符。使用正则表达式的运算符的名称包括字符串 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> 表示正则表达式运算符。正则表达式始终以字符串 re 开头。用 <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 之间的文本。您可以在由正则表达式运算符定义的范围上使用文本运算符。例如,您可以使用 CONINSTING ("<string>") 运算符来检查定义的作用域是否包含字符串 abc:

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

注意

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

正则表达式