expr字符串匹配 - 混合数字和字符?

时间:2013-04-27 11:30:34

标签: regex bash

当我输入

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

然后我输入

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

我无法弄清楚为什么?

1 个答案:

答案 0 :(得分:4)

man版本的expr页面不太清楚:

STRING : REGEXP
          anchored pattern match of REGEXP in STRING

match STRING REGEXP
          same as STRING : REGEXP

“锚定”究竟是什么意思? BSD版本可以解决问题:

  

正则表达式锚定到                带有隐式“^”的字符串的开头。

因此expr match "234can't find" 'c'expr match "234can't find" '^c'相同,并且因为您的字符串开始并且c,所以匹配失败。


由于bash原生支持正则表达式匹配,因此您可以放弃expr命令以支持

[[ "234can't find" =~ c ]]