pil*_*ght 9 regex linux bash shell terminal
所以我有这个功能
function test(){
local output="CMD[hahahhaa]"
if [[ "$output" =~ "/CMD\[.*?\]/" ]]; then
echo "LOOL"
else
echo "$output"
fi;
}
Run Code Online (Sandbox Code Playgroud)
但是,在命令行中执行测试会输出$ output而不是"LOOL",尽管模式应匹配$ output ...
我做错了什么?
Rav*_*yal 19
不要使用引号 ""
if [[ "$output" =~ ^CMD\[.*?\]$ ]]; then
Run Code Online (Sandbox Code Playgroud)
好吧,正则表达式运算符=~期望在其RHS上有一个不带引号的正则表达式,并且除了锚点^(输入的开始)之外,它只会匹配一个子字符串.$(输入的结尾)也用于使其与整个LHS匹配.
引号 ""会覆盖此行为并强制执行简单的字符串匹配,即匹配器开始\[.*?\]逐字地查找所有这些字符.