3

当我输入

$ expr match "can't find" 'c'
$ 1

然后我输入

$ expr match "234can't find" 'c'
$ 0

我想不通为什么?

4

1 回答 1

3

版本的man页面expr不是很清楚:

STRING : REGEXP
          anchored pattern match of REGEXP in STRING

match STRING REGEXP
          same as STRING : REGEXP

“锚定”究竟是什么意思?BSD 版本澄清了一切:

正则表达式使用隐含的“^”锚定到字符串的开头。

Soexpr match "234can't find" 'c'与 相同expr match "234can't find" '^c',并且由于您的字符串不以 a开头c,因此匹配失败。


由于bash本机支持正则表达式匹配,您可以放弃该expr命令以支持

[[ "234can't find" =~ c ]]
于 2013-04-27T11:47:45.630 回答