【问题标题】:Regex matching in if not working [duplicate]如果不工作,正则表达式匹配[重复]
【发布时间】:2011-07-31 18:16:04
【问题描述】:

可能重复:
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

【问题讨论】:

    标签: regex bash if-statement


    【解决方案1】:

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

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

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

    【讨论】:

    • 这似乎对我不起作用。我正在使用 [[ "$testval" =~ 失败:[1-9] ]]
    猜你喜欢
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    相关资源
    最近更新 更多