exprは,パターンマッチングと,その他の文字列演算子をサポート します.これらは,(次のセクションの)数字と関係の両演算子より低い優先順 位になります.
^
が暗黙に前置された(基本的にGNU流のgrepの)正規表現と
考えられます.最初の引数は,この正規表現に対しマッチの評価がなされます.
マッチの評価が成功し,regexが‘\(’と‘\)’を使用している
場合,:
式は,サブ式にマッチしたstringの一部となります.そ
れ以外の場合はマッチした文字の数を返します.
マッチの評価に失敗した場合,regexで‘\(’と‘\)’が使用さ
れていれば:
演算子はnull文字を返し,それ以外では0を返します.
最初の‘\( ... \)’の組のみ,戻り値に関係します.追加の組は,正 規表現演算子のグループ化の意味しかありません.
正規表現内では,\+
,\?
,そして\|
は,それぞれ,1以
上,ゼロ以上,オア分離の選択肢の演算子です.SunOSとその他の
exprはこれらを通常の文字として扱います.(POSIXは,
どちらの動作も許可します.) 正規表現の構文の詳細は,See Regular Expression Library. 例はExamples of expr
にあります.
/
の場合でも,
tokenを文字列として解釈します.これで,expr length + "$x"
やexpr + "$x" : '.*/\(.\)'
のテストが可能となり,$xの値が
(例えば)/
やindex
に偶然なった場合でも,正しく動作します.
この演算子はGNUの拡張です.移植性の高いシェルスクリプトでは,+
"$token"
の代わりに" $token" : ' \(.*\)'
を使用すべきで
す.
exprにキーワードとして文字列を解釈させるために,quote
演算子を使用する必要があります.