Citrix ADC

正規表現の演算

次の表では、正規表現を操作する演算子について説明します。特定の高度なポリシー式で正規表現演算子によって実行される操作は、式のプレフィックスがテキストヘッダーまたは HTTP ヘッダーを識別するかどうかによって異なります。ヘッダーを評価する操作は、指定されたヘッダータイプのすべてのインスタンスのテキストベースの操作をオーバーライドします。演算子を使用する場合は、\ を、<text\ > テキストを識別するために構成する高度なポリシー式のプレフィックスに置き換えます。

正規表現操作 説明
<text>.BEFORE_REGEX(<regular expression>) <regular expression\ > 引数に一致する文字列の前にあるテキストを選択します。正規表現がターゲットのどのデータとも一致しない場合、この式は長さ 0 のテキストオブジェクトを返します。次の式は、「テキスト/プレーン」から文字列「テキスト」を選択します。http.res.header(“content-type”).before_regex(re#/#)
<text>.AFTER_REGEX(<regular expression>) <regular expression\ > 引数に一致する文字列に続くテキストを選択します。正規表現がターゲットのどのテキストとも一致しない場合、この式は長さ 0 のテキストオブジェクトを返します。次の式は「MyExample」から「Example」を抽出します。http.req.header(“etag”).after_regex(re/my/)
<text>.REGEX_SELECT(<regular expression>) <regular expression\ > 引数に一致する文字列を選択します。正規表現がターゲットと一致しない場合、長さ 0 のテキストオブジェクトが返されます。次の例では、Via ヘッダー: http.req.header(“via”).regex_select(re!NS-CACHE-\d\.\d:\s*\d{1,3}!)から”NS-CACHE-9.0: 90”という文字列を抽出します。
<text>.REGEX_MATCH(<regular expression>) <regular expression\ >ターゲットが最大 1499 文字の\ 引数に一致する場合は TRUE を返します。正規表現は次の形式でなければなりません:re\ regular <delimiter\ > 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}/) と http.req.url.set_text_mode (urlencoded) .regex_match (re# (ab+c) #) 次の例は abとaに一致する:http.req.url.regex_match (re/a (?i) b/) 次の例では、ab、aB、Ab、Ab、AB とマッチします。http.req.url.set_text_mode (ignoreCase) .regex_match (re/ab/) 次の例では、大文字と小文字を区別しない複数行の一致を実行します。http.req.body.regex_match (re/ (?ixm) (^ab (.*) cd$)/)
正規表現の演算

この記事の概要