clojure.string / replace与re-seq匹配的模式不匹配

时间:2016-09-19 18:16:42

标签: regex clojure

clojure.string/replace为什么\"[^\"]+\"re-seq模式不匹配?

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

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

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

感谢您的见解。

1 个答案:

答案 0 :(得分:2)

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

如果您使用完全相同的正则表达式,它将按预期工作:

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

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

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