付録G.4 正規表現を使用する際のヒント
-
特殊文字を使用する場合は,動作確認を実施し,正規表現が意図通りに動作することを確認してください。動作確認を実施することで,下記の例のような設定の誤りを防止できます。
(例)条件の先頭や末尾に特殊文字である縦線「|」を設定したため,意図せず,すべての文字列が一致する条件になった。
-
JP1独自正規表現(Windows)やPOSIX1003.2の基本正規表現(Linux)を拡張して,拡張正規表現を使用する場合には,拡張による誤動作を防ぐため,定義済みの設定を見直し,拡張正規表現用に定義し直す必要があります。
-
制御コード(改行,タブなど)は,製品やOSによって扱いが異なることがあります。このため,メッセージに対する条件を正規表現で記述する場合は,制御コード以外の部分を記述するようにしてください。
-
正規表現で,すべての文字に一致する表現の「.*」を多用すると,検索に時間が掛かることがあります。長いメッセージなどに対して「.*」を使用する場合は,必要な個所にだけ「.*」を使用するようにしてください。
また,拡張正規表現を使用できる環境で,かつ,空白以外の文字に一致させたい場合には,「.*」の代わりに「[^ ]*」が使用できます。「[^ ]*」を使用した方が検索に掛かる時間を短縮できます。
-
部分一致の正規表現の場合,先頭および末尾に「.*」を指定した場合と,先頭および末尾に「.*」を指定しない場合では同じ条件になります。
例えば,下記の例1と,例2は同じ条件になります。
- (例1)「A001△:△WEBサーバ」を含む文字列の場合に一致する正規表現
-
.*A001△:△WEBサーバ.*
- (例2)「A001△:△WEBサーバ」を含む文字列の場合に一致する正規表現
-
A001△:△WEBサーバ
先頭および末尾に「.*」を指定した場合,検索に時間が掛かることがあるので,先頭および末尾に「.*」は指定しないでください。
なお,次に示す定義ファイルの正規表現は完全一致であり,比較対象の文字列全体を比較し,完全に一致した場合だけ条件が成立します。この場合は,先頭および末尾に「.*」を指定した場合と先頭および末尾に「.*」を指定しない場合で異なる動作となるため注意してください。
-
イベントガイド情報ファイル(jco_guide.txt)※
-
インテリジェント統合管理基盤定義ファイル(imdd.properties)
-
システムノード定義ファイル(imdd_systemnode.conf)
注※ デフォルトでは正規表現の動作は完全一致ですが,設定により部分一致に変更できます。イベントガイド情報ファイルの正規表現の設定については,マニュアル「JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス」の「イベントガイド情報ファイル(jco_guide.txt)」(2. 定義ファイル)を参照してください。
-
特殊文字である縦線「|」はOR条件を表します。このOR条件を正規表現中に使用する際は,次のことに注意してください。
OR条件の縦線「|」は正規表現の中で優先度が低いため,OR条件がかかる範囲を明示的に指定する必要があります。範囲を指定しない場合,動作しない,または誤動作する原因になることがあります。OR条件の範囲は,条件がかかる範囲を小括弧「()」で囲むことで指定できます。イベント発行元サーバ名の条件をOR条件にするときの指定例を次に示します。
- (例)gyoumuまたはhostで発行されたJP1イベント
-
^.*△.*△.*△.*△.*△(gyoumu|host)△.*△.*△.*△.*$
-
特殊文字である縦線「|」の前後にスペースが含まれていると,スペースが文字として認識されます。スペースを含まない場合,「|」の前後にスペースを入れないでください。
-
拡張正規表現を使用した場合,[],{},および()の対応が取れていないとき,文法不正となります。[],{},および()を通常文字として扱いたいときは,\を使用して特殊文字を打ち消してください。
指定例を次に示します。
- (例)「(」を通常文字として扱いたい場合
-
\(