正则表达式匹配,如果不工作

时间:2011-07-31 18:16:04

标签: regex bash if-statement

  

可能重复:
  How do I use regular expressions in bash scripts?

为什么这不起作用?

if [[ "foo" =~ "[f][o][o]" || "foo" =~ "(foo)" || "foo" =~ ".*" ]]
then
    echo "Success"
else
   echo "Fail"
fi
# Result: Fail
# Expected: Success

if [[ "foo" =~ "foo" ]]
then
    echo "Success"
else
   echo "Fail"
fi
# Result: Success
# Expected: Success

1 个答案:

答案 0 :(得分:6)

从每个正则表达式中删除引号:

if [[ "foo" =~ [f][o][o] || "foo" =~ (foo) || "foo" =~ .* ]]
then
  echo "Success"
else
  echo "Fail"
fi

显然,引号强制正则表达式被解释为文字字符串。