Systemwalker Operation Manager リファレンスマニュアル - UNIX/Windows(R)共通 - |
目次 索引 |
第16章 Systemwalkerスクリプト | > 16.1 Systemwalkerスクリプトの概要 |
スクリプト内では、正規表現を使用することができます。以下にスクリプトにおける正規表現について説明します。
. |
任意の1文字に一致する。 |
* |
直前のパターン要素の0回以上の繰り返しに一致する。 |
+ |
直前のパターン要素の1回以上の繰り返しに一致する。 |
? |
直前のパターン要素の0回または1回の出現に一致する。 |
( ) |
サブパターンをグループ化する。繰り返しや選択は、サブパターン全体に適用される。 |
| |
選択 |
[ ] |
文字集合に含まれる文字に一致する。 |
^ |
パターンの先頭に指定された場合、文字列の先頭に一致する。 |
$ |
パターンの末尾に指定された場合、文字列の末尾に一致する。 |
正規表現記号のうち、スクリプト上の特殊文字に当たるものがあるため、それらを使用する場合には以下のように記述してください。
[, ], $, (, ), {, }
以下のどちらかの方法で記述します。
regexp "\[0-9\]" $text |
または、
regexp {[0-9]} $text |
また、正規表現記号を正規表現の中で単なる文字として扱う場合は、“\”(円記号)を直前に付加してください。ただし、円記号はスクリプトとしての特殊文字でもあるため、記述する際には“\\”とするか正規表現全体を中括弧で囲む必要があります。
regexp "\\*" $text |
または、
regexp {\*} $text |
regexp "\\\[" $text |
または、
regexp {\[] $text |
また、これにともない正規表現の中で円記号自身を単なる文字として扱わせる場合は、“\\”と記述する必要があります。この場合も円記号がスクリプトとしての特殊文字であることを考慮し、2つの円記号それぞれを“\\”とするか、正規表現全体を中括弧で囲む必要があります。
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
正規表現の一般的な文法エラーとその対処法の例を示します。
正規表現の記述内で括弧“( )”の対応がとれていません。閉じ括弧の記述などが漏れていないか確認してください。括弧“( )”を通常文字として扱う場合は、“\”(円記号)を付けてエスケープしてください。
正規表現の記述内で大括弧“[ ]”の対応がとれていません。閉じ大括弧の記述などが漏れていないか確認してください。大括弧“[ ]”を通常文字として扱う場合は、“\”(円記号)を付けてエスケープしてください。
文字集合の範囲の指定に誤りがあります。大括弧“[ ]”で囲まれた部分の記述に誤りがないか確認してください。文字集合の範囲を指定する場合は、[0-9]、[a-z]などのように順序が先の文字から後の文字を指定するようにしてください。
正規表現の記号の使用方法に誤りがないか確認してください。
正規表現では空白も1文字として認識するため、正規表現中に不要な空白があると、正しく検査できません。また、全角と半角は区別します。
目次 索引 |