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