Next: , Up: expr invocation


16.4.1 文字列式

exprは,パターンマッチングと,その他の文字列演算子をサポート します.これらは,(次のセクションの)数字と関係の両演算子より低い優先順 位になります.

string : regex
パターンマッチングを実行します.引数は文字列に制限され,二番目は, ^が暗黙に前置された(基本的にGNU流のgrepの)正規表現と 考えられます.最初の引数は,この正規表現に対しマッチの評価がなされます.

マッチの評価が成功し,regexが‘\(’と‘\)’を使用している 場合,:式は,サブ式にマッチしたstringの一部となります.そ れ以外の場合はマッチした文字の数を返します.

マッチの評価に失敗した場合,regexで‘\(’と‘\)’が使用さ れていれば:演算子はnull文字を返し,それ以外では0を返します.

最初の‘\( ... \)’の組のみ,戻り値に関係します.追加の組は,正 規表現演算子のグループ化の意味しかありません.

正規表現内では,\+\?,そして\|は,それぞれ,1以 上,ゼロ以上,オア分離の選択肢の演算子です.SunOSとその他の exprはこれらを通常の文字として扱います.(POSIXは, どちらの動作も許可します.) 正規表現の構文の詳細は,See Regular Expression Library. 例はExamples of expr にあります.

match string regex
パターンマッチングを行う別の方法です.これは,‘string : regexと同じです.
substr string position length
少なくともlengthの長さの,positionから始まる,string のサブ文字列を返します.positionまたはlengthのどちらかが, 負,ゼロ,または数字以外の場合,null文字列を返します.
index string charset
charsetの最初の文字が見つかった,stringの最初の位置を返し ます.charsetの文字がstringで見つからない場合は,0を返しま す.
length string
stringの長さを返します.
+ token
キーワードのようなmatchや,演算子のような/の場合でも, tokenを文字列として解釈します.これで,expr length + "$x"expr + "$x" : '.*/\(.\)'のテストが可能となり,$xの値が (例えば)/indexに偶然なった場合でも,正しく動作します. この演算子はGNUの拡張です.移植性の高いシェルスクリプトでは,+ "$token"の代わりに" $token" : ' \(.*\)'を使用すべきで す.

exprにキーワードとして文字列を解釈させるために,quote 演算子を使用する必要があります.