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 回答