$ {...}变量插值的正则表达式

时间:2011-12-02 16:49:38

标签: regex clojure

非常困难于我认为非常简单的问题。作为一个例子,我有以下字符串,我需要插入值:

“其他一些文字或任何内容$ {who}是$ {what}其他一些文字或什么都没有” “其他一些文字或什么都没有$ {postfix}一些其他文字或什么都没有” “其他一些文字或没有$ {prefix}某些其他文字或什么都没有”

我需要的是对$ {...}事物进行分组,以便稍后可以用值替换它们。

我正在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]

我似乎无法将$ {that}视为匹配......

1 个答案:

答案 0 :(得分:3)

表达式

(\$\{\w+\})

应该可行,但您可能想要使用它:

\$\{(\w+)\}

你的表达式最后会有一个*,在某些情况下会破坏它,但在这种情况下它应该可以工作(如果你不需要双重转义)。您是否正确使用正则表达式API?是否适用于\w+等简单匹配?