Systemwalker Centric Manager スクリプトガイド - UNIX共通 - - Microsoft(R) Windows NT(R)/ Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 -
目次 索引 前ページ次ページ

付録A 正規表現

スクリプト内では、正規表現を使用することができます。

以下にスクリプトでの正規表現について説明します。

◆正規表現の記号

.

任意の1文字に一致する。
例:regexp {ABC.} $text
解説: 文字列中に"ABC"で始まる4文字の文字列があるか検査する。

*

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

+

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

?

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

( )

サブパターンをグループ化する。
繰り返しや選択は、サブパターン全体に適用される。
例: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のように複数の円記号が必要になります。
このとき、円記号の記述を間違いやすいので、正規表現の記述は常に中括弧で囲むことを推奨します。

目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 1995-2005