2016-09-19 73 views
0

为什么clojure.string/replace不匹配\"[^\"]+\"模式,而re-seq呢?clojure.string /替换不匹配的模式匹配re-seq

(re-seq #"\"[^\"]+\"" "ab,\"helo,bro\",yo") 
=> ("\"helo,bro\"")  

(clojure.string/replace "ab,\"helo,bro\",yo" #"\"[^\"]+\”" "") 
=> "ab,\"helo,bro\",yo" 

我期望replace删除匹配的模式。我在这里错过了什么?

感谢您的洞察力。

回答

2

你的正则表达式可能是(可能无意)不同:在replace选项中,你使用\”而不是\"

如果使用完全相同的正则表达式会按预期:

(def r #"\"[^\"]+\"") 

(re-seq r "ab,\"helo,bro\",yo") 
=> ("\"helo,bro\"") 

(clojure.string/replace "ab,\"helo,bro\",yo" r "") 
=> "ab,,yo"