正規表現について

正規表現は、データを一致させるために使用される文字、数字および特殊文字のグループです。プロキシ アクションの特定の種類のトラフィックに一致するように、Firebox 構成で Perl-compatible regular expressions (PCRE) を使用することができます。たとえば、1 つの正規表現を使用して、一部の Web サイトの接続をブロックし、他の Web サイトの接続を許可することができます。受信者は、会社に対して有効な電子メール アドレスではない場合、SMTP 接続も拒否できます。たとえば、組織のインターネット利用ポリシーに違反する Web サイトを部分的にブロックする場合は、HTTP プロキシ構成の URL パス カテゴリで正規表現を使用します。

全般ガイドライン

  • Fireware OS における正規表現では、大文字と小文字が区別されます。正規表現を作成する場合は、正規表現の大文字と小文字が、一致させるテキストの文字と一致するように注意してください。グループの初めに変更子 (?i) を追加して、正規表現の大文字と小文字が区別されないようにすることができます。
  • Fireware OS の正規表現は、MS-DOS と Unix ワイルドカード文字とは異なります。MS-DOS または Windows コマンド プロンプトを使用してファイルを変更する場合は、? または * を使用して、ファイル名の 1 文字または複数の文字と一致させることができます。Fireware では、これらの簡単なワイルドカード文字は機能しません。

正規表現の作成

最も簡単な正規表現が、一致させたいテキストで作成されます。すべての文字、数字および他の印刷可能文字が、タイプした同じ文字、数字または印刷可能文字に一致します。文字および数字で作成された正規表現は、この文字および数字がすべて同じ順序で含まれる文字列にだけ一致します。

例:fat は fat、fatuous および infatuated や、多くの他の文字列にも一致します。

Fireware OS は、正規表現を含むすべての文字列を受け入れます。正規表現は、多くの場合、複数の文字列に一致します。正規表現が、ルールの拒否のソースとして使用された場合、いくつかのネットワーク トラフィックを誤ってブロックする可能性があります。Firebox に構成を保存する前に、正規表現を完全にテストすることをお勧めします。

同時に異なる文字列に一致させるには、特殊文字を使用する必要があります。最のよく使用される特殊文字は、終止符 (.) で、これはワイルドカードと同様です。正規表現に終止符を入れた場合、これは、すべての文字、スペースまたはタブに一致されます。終止符は、改行には一致されません (\r\n or \n)。

例:f..t は、foot、feet、f&#t、f -t、および f\t3t に一致します。

終止符等の特殊文字に一致させるためには、文字の前にバックスラッシュ (\) を追加する必要があります。特殊文字にバックスラッシュを追加しない場合、ルールが正しく機能しない可能性があります。\t (タブ ストップ)のように、元々文字にバックスラッシュがある場合、もう 1 つバックスラッシュを追加する必要はありません。

実際の文字に一致させるには、これらのすべての特殊文字(? . * | + $ \ ^ ( ) [)にバックスラッシュを追加する必要があります。

例:\$9\.99 は、$9.99 に一致します

16 進数文字

16 進数文字に一致するには、\x または %0x% を使用します。16 進数文字は、大文字と小文字を区別しないモディファイアの影響を受けません。

例:\x66 または %0x66% は f に一致しますが、F には一致できません。

繰り返し

不定量の文字に一致するには、繰り返しモディファイアを使用する必要があります。単一文字または文字のグループにモディファイアを適用できます。4 つの種類の繰り返しモディファイアがあります。

  • 波括弧にある数字 (たとえば、{2,4}) は、最初の数字または 2 番目の数字まで一致します。
    例:3{2,4} は、33、333 または 3333 に一致します。これは、3 または 33333 には一致しません。
  • 疑問符 (?) が先行文字、クラスまたはグループのゼロまたは 1 つの存在に一致します。
    例:me?et は met および meet に一致します。
  • プラス記号 (+) は、先行文字、クラスまたはグループの 1 つまたは1 つ以上の存在に一致します。
    例:me+t は met、meet および meeeeeeeeet に一致します。
  • アスタリスク (*) は、先行文字、クラスまたはグループのゼロまたはゼロ以上の存在に一致します。
    例:me*t は mt、met、meet および meeeeeeeeet に一致します。

さまざまな文字にモディファイアを同時に適用するには、グループを作成する必要があります。文字の順序のグループを作成するには、順序を括弧に入れます。

例:ba(na)* は、ba、bana、banana および banananananana に一致します。

文字のクラス

グループの 1 つの文字に一致させる場合、文字クラスを作成するには、丸カッコの代わりに角括弧を使用します。文字のクラスに繰り返しモディファイアを適用できます。クラス内の文字の順序は、問題ではありません。

文字のクラス内の特殊文字のみが右角括弧 (])、バックスラッシュ (\)、キャレット (^) およびハイフン (-) です。

例:gr[ae]y は、gray および grey に一致します。

文字のクラスにキャレットを使用するには、これを最初の文字として設定しないでください。

文字のクラスにハイフンを使用するには、これを最初の文字として設定します。

否定文字クラスは、指定された文字以外のすべての文字に一致します。いずれかの文字クラスの最初にキャレット (^) を入力して、これを否定文字クラスと作成します。

例:[Qq][^u] は、Qatar に一致しますが、question または Iraq に一致しません。

範囲

いずれかの文字または数字を選択するには、多くの場合、文字範囲と一緒に文字クラスが使用されます。範囲は、グループ文字の開始または終了をマークするハイフン (-) で区切られる 2 つの文字または数字の範囲です。範囲のいずれかの文字に一致させることができます。文字クラスに繰り返しモディファイアを追加した場合、先行クラスが繰り返されます。

例:[1-3][0-9]{2} は、100、399 およびこの間のいずれかの数字に一致します。

多く使用される範囲には短縮表記があります。他の文字クラスの内部または外部で、短縮文字クラスを使用できます。否定短縮文字クラスは、短縮文字クラスと一致する文字の反対の文字に一致します。以下の表には、いくつかの共通短縮文字クラスとこれらの否定値を表示しています。

ClassEquivalent to NegatedEquivalent to
\w いずれかの文字または数字 [A-Za-z0-9] \W 文字または数字ではない
\s いずれかの空白文字 [ \t\r\n] \S 空白なし
\d いずれかの数字 [0-9] \D 数字なし

アンカー

アンカーを使用して、ラインの開始または終了と一致させるすることができます。キャレット (^) でラインの開始、および ドル記号 ($) でラインの終了と一致しますす。

例:ラインにアンペアのみがある場合、^am.*$ は ampere と一致します。これは、dame には一致しません。

語境界に一致させるには \b を使用でき、語境界以外の位置に一致させるには \B を使用できます。

3 つの種類の語境界があります。

  • 最初の文字がワード文字 (\w)• である場合、文字列の最初の文字の前
  • 最後の文字がワード文字 (\w)• でる場合、文字列の最後の文字の後
  • ワード文字 (\w) およびワードなし文字(\W) の間

代替

いくつかの可能な正規表現内の単一の正規表現に一致させるには、代替を使用できます。正規表現の代替オペレーターは、パイプ文字 (|) です。これはブール オペレーター (OR)と同じです。

例:m(oo|a|e)n は、moon、man または men の最初の存在に一致します。

共通正規表現

PDF コンテンツの種類 (MIME 種類) に一致する

^%PDF-

いずれかの有効な IP アドレスに一致する

(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9] [0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]? [0-9][0-9]?)

多くの電子メール アドレスに一致する

\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b

関連情報:

ルールおよびルールセットについて

ルールを追加、削除、または変更する

ルール定義をカット アンド ペーストする

ルールの順序を変更する