BSD expr 与 GNU expr 的区别
BSD expr difference with GNU expr
有谁知道为什么
expr "4" : '-\?[0-9]\+$'
returns 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。)
基本正则表达式不支持 ?
和 +
运算符;您需要改用边界。
?
用 \{0,1\}
实现(出现 0 到 1 次)
+
用 \{1,\}
实现(出现 1 次或多次)
如果转义,GNU expr
似乎允许将它们作为扩展。
以下是一个可移植的调用,应该可以在 expr
的任何 POSIX 兼容实现中工作:
expr "4" : '-\{0,1\}[0-9]\{1,\}$'
有谁知道为什么
expr "4" : '-\?[0-9]\+$'
returns 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。)
基本正则表达式不支持 ?
和 +
运算符;您需要改用边界。
?
用\{0,1\}
实现(出现 0 到 1 次)+
用\{1,\}
实现(出现 1 次或多次)
如果转义,GNU expr
似乎允许将它们作为扩展。
以下是一个可移植的调用,应该可以在 expr
的任何 POSIX 兼容实现中工作:
expr "4" : '-\{0,1\}[0-9]\{1,\}$'