ADC

正規表現

CONTAINS ("<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パターン間のテキストであることを指定します。正規表現演算子で定義されたスコープでは、テキスト演算子を使用できます。たとえば、CONTAINS ("<string>") 演算子を使用して、定義されたスコープに文字列 abc が含まれているかどうかを確認できます。

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

正規表現を評価するプロセスは、本質的に単純な文字列引数で動作するCONTAINS ("<string>") や EQ ("<string>") などの演算子の場合よりも時間がかかります。正規表現は、要件が他の演算子の範囲を超えている場合にのみ使用してください。

正規表現

この記事の概要