1

誰でも理由を知っていますか

expr "4" : '-\?[0-9]\+$' 

Mac OS X では 0 を返し、Linux では 1 を返しますか?

事実: Mac は BSD expr を使用します Linux は GNU を使用します

申し訳ありませんが、私は最初に入力しました

expr "4" : '-\?[0-9]+$'
4

1 に答える 1

2

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,\}$'
于 2016-08-11T12:22:01.707 に答える