ADC

正規表現

CONTAINS ("<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>正規表現演算子 を表します。正規表現は常に文字列 re で始まります。正規表現を表す文字列<regex_pattern>は、<delimiter>で表される一致区切り文字のペアで囲みます。

次の式例は、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>") などの演算子よりも本質的に時間がかかります。正規表現は、要件が他の演算子の範囲を超えている場合にのみ使用してください。

正規表現

この記事の概要