誰でも理由を知っていますか
expr "4" : '-\?[0-9]\+$'
Mac OS X では 0 を返し、Linux では 1 を返しますか?
事実: Mac は BSD expr を使用します Linux は GNU を使用します
申し訳ありませんが、私は最初に入力しました
expr "4" : '-\?[0-9]+$'
expr拡張正規表現ではなく、基本正規表現を取ります。(それぞれの定義については、http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.htmlを参照してください。)
?基本的な正規表現は、 and+演算子をサポートしていません。代わりに境界を使用する必要があります。
?\{0,1\}(0から1回の出現)で実装されています+で実装されます\{1,\}(1 回以上のオカレンス)GNUexprは、エスケープされている場合、それらを拡張機能として許可しているようです。
以下は、 の POSIX 準拠の実装で動作する移植性のある呼び出しですexpr。
expr "4" : '-\{0,1\}[0-9]\{1,\}$'