機能説明
文字列と正規表現のマッチング検査と、一致部分の切り出しをします。
記述形式
regexp exp string 【matchvar】 【submatchvar1 submatchvar2 ....】 |
オプション
正規表現を指定します。
検査対象となる文字列を指定します。
一致した場合に、string中の正規表現に一致している部分を切り出して格納する変数の名前を指定します。省略時は、一致した部分の格納が行われません。
一致した場合に、string中で正規表現内の「()」(小括弧)で囲まれた部分に一致している部分を切り出して格納する変数の名前を指定します。省略時は、一致した部分の格納が行われません。
ポイント
正規表現とは、文字列の構造を記号で表したもので、本コマンドはstringで指定した文字列中に、正規表現expで表した構造に一致する部分があるか検査するものです。
一致した場合は、expで表した構造に一致した部分を、stringから切り出し、matchvarの変数に格納します。
また、正規表現中には、任意の箇所に任意の個数だけ、文字列の切り出し箇所を指定可能で、その指定がある場合は、前から順にsubmatchvarの変数に格納されます。
正規表現の書き方については、“正規表現”を参照してください。
復帰値
一致しませんでした。
一致しました。
使用例
指定文字の前後を切り出す
文字列中に「,」(カンマ)があるか検査し、ある場合は一致部分すべてをallに、カンマの前の部分と後の部分をそれぞれ変数sub1、sub2に切り出します。(カンマの前後は空文字でも可)
regexp {(.*),(.*)} $text all sub1 sub2
切り出し部分を指定する
以下のメッセージから、「< >」で囲まれた部分を切り出して、変数Var0に格納します。
ネットワークで"LinkUp"が発生しました。<DBサーバに異常が発生しました。>
regexp {<([^>]*)} $EventText All Var0
変数Var0には「.DBサーバに異常が発生しました。」が格納されます。
特殊文字は、「\」円記号でエスケープする
以下のメッセージから「JobName=」以降から空白までの部分を変数Var0に、RC=以降の「[ ]」(大括弧)で囲まれた部分を変数Var1に、「device=」以降の「( )」(小括弧)で囲まれた部分を変数Var2に、それぞれ切り出して格納します。
JOBNET Error. JobName=SCRJB_1 RC=[0022] xxx- device=(DX038)
regexp {JobName=([^ ]*) RC=\[([^\]]*)\] .*device=\(([^\)]*)\)} $EventText All Var0 Var1 Var2
それぞれ変数Var0には「SCRJB_1」、変数Var1には「0022」、変数Var2には「DX038」が格納されます。
実行結果/出力形式
なし