regex="\{foo"; string="{foo"; [[ $string =~ $regex ]] && echo "true"
Run Code Online (Sandbox Code Playgroud)
这是一个在Bash 3.x和4.x中运行的bash脚本.如果"\"被删除,那么它将停止在Bash 4.x中工作.这种行为是否预期和/或是一个错误?正则表达式(7)手册页建议不需要转义.其他正则表达式是否需要转义大括号?
开口支撑需要转义,因为它表示量词的开始 - {m,n}.我没有使用任何正则表达式的味道,它的工作原理没有逃脱{.但是,我不能对所有人发表评论.但原因很合乎逻辑.
出于同样的原因,您需要转义左括号 - [因为它表示字符类的开头.