2011-12-02 99 views
0

非常堅持一個我認爲很簡單的問題。舉個例子,我有以下字符串我需要值插值到:

「的一些其他文字或沒有$ {誰}是$ {什麼}其他一些文字或全無」的 「其他一些文字或無中生有$ {一些其他的文字或沒有任何東西$ {前綴}一些其他的文字或什麼都沒有「

我需要的是將$ {...}組合在一起,以便我可以替換它們後面有一個值。

我在Clojure中執行我的RegEx匹配,所以真正在後臺使用Java RegEx庫。到目前爲止,我已經試過:

user=> (def regex #"(\$\{\w+\})*") 
#'user/regex 
user=> (def matcher (re-matcher regex "${who} is a great ${that}person")) 
#'user/matcher 
user=> (re-find matcher) 
["${who}" "${who}"] 
user=> (re-find matcher) 
["" nil] 

我似乎無法得到$ {}這被認爲是比賽...

回答

3

表達

(\$\{\w+\}) 

應該工作,本書雖然是你可能想使用它代替:

\$\{(\w+)\} 

你的表達有*在這將打破它在一些C結束在這種情況下,它應該起作用(如果你不需要雙重轉義任何東西)。你正確使用正則表達式API嗎?它是否適用於像\w+這樣的簡單匹配?

+0

謝謝,我想這是討厭的*! – ThaDon