我正在尝试将值传递给clojure的重新匹配函数以获得正则表达式,如此
(defn extract-val
[k data]
(let [r (format ".*\"%s\":\"(.*?)\".*" k)
v ((last (re-matches #(str r) data)))]
v))
将此功能称为 (extract-val“event”“{\”event \“:\”data \“}”)
抛出一个类强制转换异常,并带有一条消息,告知无法强制转换为java.util.regex.Pattern clojure.core / re-matcher
有没有办法做到这一点,或者我必须直接使用regex.Pattern
答案 0 :(得分:3)
#(str r)
创建一个0参数的匿名函数,在调用时计算str r
。您可以使用re-pattern
:
(last (re-matches (re-pattern r) data)
如果你正在处理JSON,你应该使用解析器而不是正则表达式。