regex="\{foo"; string="{foo"; [[ $string =~ $regex ]] && echo "true"
这是一个在Bash 3.x和4.x中运行的bash脚本。如果“\”被删除,那么它将停止在Bash 4.x中工作。这种行为是否预期和/或是一个错误?正则表达式(7)手册页建议不需要转义。其他正则表达式是否需要转义大括号?
答案 0 :(得分:6)
需要对开口括号进行转义,因为它表示量词的起点 - {m,n}
。我没有使用任何正则表达式的味道,它可以在不转义{
的情况下工作。但是,我不能对所有人发表评论。但原因很合乎逻辑。
出于同样的原因,你需要转义左括号 - [
,因为它表示一个字符类的开头。
答案 1 :(得分:0)