2017-07-25 125 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