为什么这个正则表达式在 bash 中不起作用?
if [[ "$vl" =~ ^ *[{-].* ]]; then
我想匹配任意数量的空格,后跟{
or -
,以及后面的任何内容。
答案1
当在测试构造中使用时,您需要转义该空间。
if [[ "$vl" =~ ^\ *[{-].* ]]; then
然而,通常认为将正则表达式存储在变量中是更好的做法
pattern='^ *[{-].*'
if [[ "$vl" =~ $pattern ]]; then
另请注意,这将匹配零到无限的空格,因为*
已使用,如果您想确保至少有一个空格,您应该使用+
另外,.*
末尾也不需要,因为正则表达式不需要匹配整行。
pattern='^ +[{-]'