当我输入
时$ expr match "can't find" 'c'
$ 1
然后我输入
$ expr match "234can't find" 'c'
$ 0
我无法弄清楚为什么?
答案 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 ]]