トランスポート ルールの正規表現

 

適用先: Exchange Server 2010 SP2, Exchange Server 2010 SP3

トピックの最終更新日: 2016-03-18

MicrosoftExchange Server 2010 トランスポート ルールの述語で正規表現を使用して、メッセージのさまざまな部分 (メッセージのヘッダー、送信者、受信者、メッセージの件名、本文など) でテキスト パターンを検索することができます。述語は、構成済みのアクションをメール メッセージに適用する必要があるかどうかを判断するために条件と例外で使用されます。

注意

お客様の環境とはさまざまな相違があるため、Microsoft カスタマー サポート サービス (CSS) は、カスタムの正規表現スクリプト (“RegEx スクリプト”) の開発またはテストには参加できません。カスタムの RegEX スクリプトの開発、テストとデバッグについては、Office 365 のお客様ご自身の組織内の IT リソースをご利用いただく必要があります。あるいは、Office 365 のお客様は、Microsoft Consulting Services (MCS) などの外部コンサルティング リソースの利用をお選びいただけます。スクリプトの開発リソースを問わず、CSS EXO および EOP のサポート エンジニアは、お客様からのカスタムの RegEx スクリプトについてのお問い合わせには対応していません。

トランスポート ルールに関連する管理タスクについては、「トランスポート ルールの管理」をご覧ください。

目次

単純表現と正規表現

Exchange 2010 の正規表現

正規表現を使用するトランスポート ルールの作成

単純表現と正規表現

正規表現を理解するには、まず単純表現を理解する必要があります。単純表現は、メッセージで一致させる必要のある特定の値を表します。単純表現を使用した述語は、特定の単語または文字列と一致します。単純表現の例として、組織が組織の外部に配布されることを望まないドキュメントのタイトルがあります。たとえば、Yearly Sales Forecast.doc (年間売り上げ予測) などです。トランスポート ルール内の条件または式を満たすには、メール メッセージ内の各データが単純表現と正確に一致する必要があります。

正規表現とは、メッセージ内のテキストのパターンを検出するための簡潔で柔軟な表記法です。表記は、2 つの基本的な文字の種類で構成されます。

  • リテラル文字   対象の文字列に存在する必要のあるテキストです。入力どおりの通常の文字です。

  • メタ文字   文字どおり解釈されない 1 つまたは複数の特殊文字です。対象の文字列内のテキストの許容可能な変動範囲を指定します。

正規表現を使用すると、メール メッセージをすばやく解析し、特定のテキスト パターンを見つけることができます。これにより、社会保障番号 (SSN)、特許番号、電話番号など、特定の種類のコンテンツを持つメッセージを検出できます。

単純表現では検出する値のすべての可能なバリエーションを入力する必要があるため、このデータを単純表現と合理的に一致させることはできません。多くの場合、こうしたアプリケーションに単純表現を使用するとロジスティクス問題が発生し、メッセージ コンテンツでの多数の単純表現のマッチングは、リソースを大量に消費する可能性があります。通常、正規表現を使用する方が効率的です。すべての可能なバリエーションを指定する代わりに、テキスト パターンを検索するためのトランスポート ルール述語を構成できます。

Exchange 2010 の正規表現

Exchange 管理シェルでは、Patterns 述語プロパティを受け付ける任意の述語で正規表現を使用できます。Exchange 管理コンソールでは、"テキスト パターンが含まれる場合" という文字列を含む任意の式または例外ルールと共に正規表現を使用できます。述語の詳細については、「トランスポート ルールの述語」を参照してください。

注意

作成した正規表現を慎重にテストして、予期された結果が生成されることを十分確認する必要があります。正規表現を誤って構成すると、予期しない一致が発生したり、不要なトランスポート ルールの動作が生じたりする場合があります。これにより、メッセージやメッセージ コンテンツで望ましくないアクションが実行され、メッセージの拒否または往復などのアクションを使用したときにデータの損失が発生する場合があります。また、複雑な正規表現は、メール トランスポートのパフォーマンスに影響を与える可能性があります。正規表現を運用環境に実装する前に、テスト環境でテストするようにしてください。

次の表は、Exchange 2010 でパターン マッチング正規表現を作成するために使用できるパターン文字列の一覧です。

パターン文字列

パターン文字列 説明

\S

\S パターン文字列は、スペース以外の任意の 1 文字と一致します。

\s

\s パターン文字列は、任意の 1 つのスペース文字と一致します。

\D

\D パターン文字列は、数値以外の任意の桁数と一致します。

\d

\d パターン文字列は、任意の 1 つの数値の桁数と一致します。

\w

\w パターン文字列は、文字または数値として分類される 1 つの Unicode 文字と一致します。

\W

\W パターン文字列は、文字または数値として分類されない 1 つの Unicode 文字と一致します。

|

パイプ ( | ) 文字は、OR 機能を実行します。

*

アスタリスク ( * ) 文字は、その前にある文字の 0 個以上のインスタンスと一致します。たとえば、ab*c は、acabcabbbbc などの文字列と一致します。

( )

かっこは、グループ化の区切り記号として機能します。たとえば、a(bc)* は、aabcabcbcabcbcbc などの文字列と一致します。

\

円記号は、特殊文字の前にエスケープ文字として使用されます。パターン文字列で使用される特殊文字は、次のとおりです。

  • 円マーク ( \ )

  • パイプ ( | )

  • アスタリスク ( * )

  • 左小かっこ ( ( )

  • 右小かっこ ( ) )

  • キャレット ( ^ )

  • ドル記号 ( $ )

たとえば、(525) を含む文字と一致させる必要がある場合は、「\(525\)」と入力します。

^

キャレット ( ^ ) 文字は、キャレットに続くパターン文字列が、一致させる文字列の先頭に存在する必要があることを示します。

たとえば、^fred@contoso は、 fred@contoso.com fred@contoso.co.uk と一致しますが、alfred@contoso.com とは一致しません。

$

ドル記号 ( $ ) 文字は、その前にあるパターン文字列が、一致させる文字列の末尾に存在する必要があることを示します。

たとえば、contoso.com$ は、adam@contoso.com kim@research.contoso.com と一致しますが、kim@contoso.com.au とは一致しません。

正規表現の作成

前の表を使用することにより、一致させる必要のあるデータのパターンと一致する正規表現を作成できます。一致させる必要のあるデータ内の各文字または文字のグループを、左から右に順に調べます。各パターン文字列の説明を参照し、それが一致させる必要のあるデータにどのように適用されるかを判断してください。次に、その文字または文字のグループを表す表内のパターン文字列を特定し、そのパターン文字列を正規表現に追加します。終了すると、完全に構築された正規表現が得られます。

この正規表現の例は、425 555-0100 および 425.555.0100 という形式の北米の電話番号と一致します。

425(\s|.)\d\d\d(-|.)\d\d\d\d

この例は、市外局番の前後にかっこを使用した (425) 555-0100 という電話番号形式を追加することによって拡張できます。この正規表現の例は、3 つの電話番号すべての形式と一致します。

\d\d\d((\s|.|-|\)|\)\s)\d\d\d(\s|.|-)\d\d\d\d

前の例は、次のように分析できます。

  • \d\d\d   この部分により、最初に正確に 3 つの数値の桁数が存在することが必要になります。

  • ((\s|.|-|\)|\)\s)   この部分により、3 桁の数値の後にスペース、ピリオド、またはハイフンが存在することが必要になります。文字と一致させる各文字列が、グループ化の区切り記号内に含まれ、パイプ文字で区切られています。つまり、グループ化の区切り記号内に指定された文字のいずれか 1 つだけが、一致させる文字列のこの位置に存在できます。市外局番と次の 3 つの数値の桁数の間を分離するための終わりかっこ、または終わりかっことスペースも検索します。

  • \d\d\d   この部分により、次に正確に 3 つの数値の桁数が存在することが必要になります。

  • (\s|.|-)   この部分により、3 桁の数値の後にスペース、ピリオド、またはハイフンが存在することが必要になります。

  • \d\d\d\d   この部分により、次に正確に 4 つの数値の桁数が存在することが必要になります。

上記の正規表現は、次のサンプル値と一致します。

  • (425)555.0100

  • 425 555 0100

  • 425. 555-0100

  • (425) 555-0100

  • 425-555-0100

  • (425) 555-0100

正規表現を使用するトランスポート ルールの作成

この例では、メール メッセージの件名内の SSN を検索するため正規表現を使用するトランスポート ルールをシェルに作成します。

New-TransportRule -Name "Social Security Number Block Rule" -SubjectOrBodyMatchesPatterns '\d\d\d-\d\d-\d\d\d\d' -RejectMessageEnhancedStatusCode "5.7.1" -RejectMessageReasonText "This message has been rejected because of content restrictions" 

この例では、新しいトランスポート ルールを表示できます。

Get-TransportRule "Social Security Number Block Rule" | Format-List

 © 2010 Microsoft Corporation.All rights reserved.