摆脱括号如果我试试这个Clojure中
(import java.util.regex.Pattern)
(Pattern/compile ")[email protected]#$%^&*()")
或本
(def p #")[email protected]#$%^&*()")
我已经Clojure的抱怨,有一个无与伦比/未关闭)
。为什么在这个简单的字符串中评估括号?如何逃避他们?由于
编辑:当逃脱的具体Clojure的语法(#""
)的作品,它不与Pattern/compile
语法,我确实需要,因为我有一个字符串动态编译正则表达式拍打工作。
我试着re-pattern
,但我不能因为某些原因正确逃生:
(re-pattern "\)[email protected]#$%^&*\(\)")
java.lang.Exception: Unsupported escape character: \)
java.lang.Exception: Unable to resolve symbol: ! in this context (NO_SOURCE_FILE:0)
java.lang.Exception: No dispatch macro for: $
java.lang.Exception: Unable to resolve symbol: % in this context (NO_SOURCE_FILE:0)
java.lang.IllegalArgumentException: Metadata can only be applied to IMetas
EDIT 2这个小功能可以帮助:
(defn escape-all [x]
(str "\\" (reduce #(str %1 "\\" %2) x)))
另外,我不认为你需要导入,你可以使用Clojure的're-pattern'函数。 – 2012-07-26 15:05:04
你是对的。仍然,我无法让它工作。请看我的编辑。 – pistacchio 2012-07-26 15:06:30