誰でも理由を知っていますか
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,\}$'