2017-07-25 200 views
0

我尝试替换表单{字符串}的字符串,但不知何故它不工作。大括号替换大括号

regex='\{\w*\}' 
pattern="{test}_test1" 
while [[ $pattern =~ $regex ]]; do 
    toreplace=${BASH_REMATCH[@]} 
    pattern=${pattern/toreplace/replaced} 
done 
echo $pattern 

我想除了以下的输出:

replaced_test1 
+1

那些是“大括号”。尖括号是用于HTML/XML的。 – Lix

+0

\ w不被bash正则表达式识别 –

+0

@Lix更新标题 – papanito

回答

1

你缺少一个 “$” 和qutoes认可,改变它所以它看起来更像这样: pattern="${pattern/$toreplace/replaced}"

它会工作得很好,经过测试o n GNU bash,版本3.2.52

+1

谢谢,也来自@Nahuel Fouilleil的作品 pattern = $ {pattern/$ {toreplace}/replaced} – papanito

1

\ W是不是bash的正则表达式

regex='\{[[:alpha:]]*\}' 
pattern="{test}_test1" 
while [[ $pattern =~ $regex ]]; do 
    toreplace=${BASH_REMATCH[0]} 
    pattern=${pattern/${toreplace}/replaced} 
done 
echo $pattern