有谁知道为什么
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,\}$'