ページのトップに戻る
Systemwalker Operation Manager  リファレンスマニュアル

16.1.4 正規表現

スクリプト内では、正規表現を使用することができます。以下にスクリプトにおける正規表現について説明します。

正規表現の記号

.

任意の1文字に一致する。
例:regexp {ABC.} $text
解説:文字中に“ABC”とそれに続く任意の1文字からなる4文字の文字列があるか検査する。

*

直前のパターン要素の0回以上の繰り返しに一致する。
例:regexp {<.*>} $text
解説:文字列中に“<”と“>”で囲まれた部分があるか検査する。(囲まれた中は空文字でも可)

+

直前のパターン要素の1回以上の繰り返しに一致する。
例:regexp {<.+>} $text
解説:文字列中に“<”と“>”で囲まれた文字があるか検査する。(囲まれた中には任意の文字が1文字以上あること)

?

直前のパターン要素の0回または1回の出現に一致する。
例:regexp {0?1} $text
解説:文字列中に“1”または“01”があるか検査する。

( )

サブパターンをグループ化する。繰り返しや選択は、サブパターン全体に適用される。
例:regexp {(.*),(.*)} $text all sub1 sub2
解説:文字列中にコンマがあるか検査し、ある場合は一致部分すべてをallに、コンマの前後をそれぞれsub1,sub2に切り出す。(コンマの前後は空文字列でも可)

|

選択
例:regexp {Info|Warning} $text
解説:文字列中に“Info”または“Warning”が含まれるか検査する。

[ ]

文字集合に含まれる文字に一致する。
ただし、最初の文字が“^”(ハット)である場合は、文字集合に含まれない文字に一致する。範囲は[a-z]のように“-”(ハイフン)を入れる。
例:regexp {ABC[0-9][0-9][^ ]} $text
解説:文字列中に“ABC”に続く2桁の数字があり、さらにその直後が空白以外であるか検査する。

^

パターンの先頭に指定された場合、文字列の先頭に一致する。
例:regexp{^ABC} $text
解説:文字列の先頭が“ABC”であるか検査する。

$

パターンの末尾に指定された場合、文字列の末尾に一致する。
例:regexp{ABC$} $text
解説:文字列の末尾が“ABC”であるか検査する。

パターン検索の規則

特殊文字と正規表現記号の扱い

正規表現記号のうち、スクリプト上の特殊文字に当たるものがあるため、それらを使用する場合には以下のように記述してください。

スクリプト上の特殊文字

[, ], $, (, ), {, }

特殊文字の使用方法

以下のどちらかの方法で記述します。

例:

regexpの引数に正規表現の“[0-9]”を指定します。

regexp ”¥[0-9¥]” $text

または、

regexp {[0-9]} $text

また、正規表現記号を正規表現の中で単なる文字として扱う場合は、“¥”(円記号)を直前に付加してください。ただし、円記号はスクリプトとしての特殊文字でもあるため、記述する際には“¥¥”とするか正規表現全体を中括弧で囲む必要があります。

例1:

文字“*”を含んでいるかを検査します。

regexp ”¥¥*” $text

または、

regexp {¥*} $text

例2:

文字“[”を含んでいるかを検査します。

regexp “¥¥¥[” $text

または、

regexp {¥[} $text

また、これにともない正規表現の中で円記号自身を単なる文字として扱わせる場合は、“¥¥”と記述する必要があります。この場合も円記号がスクリプトとしての特殊文字であることを考慮し、2つの円記号それぞれを“¥¥”とするか、正規表現全体を中括弧で囲む必要があります。

例3:

文字“¥”を含んでいるかを検査します。

regexp ”¥¥¥¥” $text

または、

regexp {¥¥} $text

参考

スクリプトの特殊文字を円記号でエスケープすると、例2,3のように複数の円記号が必要になり間違いやすいため、正規表現の記述は常に中括弧で囲むことを推奨します。

ポイント

文字列を切り出すには[^ ]を組み合わせて記述します。

文字列"A<BC>D"から"< >"で括られている"BC"部分を変数Var0に切り出す場合は、以下のように記述します。

regexp {<([^>]*)} "A<BC>D" All Var0

文字列"A[BC]D"から"[ ]"で括られている"BC"部分を切り出す場合、特殊記号の"[ ]"の直前に円記号"¥"を付加してエスケープします。

regexp {¥[([^¥]]*)} "A¥[BC¥]D" All Var0

正規表現の一般的な文法エラーについて

正規表現の一般的な文法エラーとその対処法の例を示します。

注意事項

正規表現では空白も1文字として認識するため、正規表現中に不要な空白があると、正しく検査できません。また、全角と半角は区別します。