我正在尝试将一个值传递到 clojure 的重新匹配函数中,以获取像这样的正则表达式
(defn extract-val
[k data]
(let [r (format ".*\"%s\":\"(.*?)\".*" k)
v ((last (re-matches #(str r) data)))]
v))
将此函数调用为 (extract-val "事件""{\"事件\":\"数据\"}")
抛出类转换异常,并显示一条消息,指出无法转换为 java.util.regex.Pattern clojure.core/re-matcher
有什么方法可以做到这一点还是我必须直接使用 regex.Pattern
最佳答案
#(str r)
创建一个包含 0 个参数的匿名函数,在调用时对 str r
进行计算。您可以使用re-pattern
创建模式:
(last (re-matches (re-pattern r) data)
如果您正在处理 JSON,则应该使用解析器而不是正则表达式。
关于regex - 如何将值作为正则表达式而不是字符串常量传递给重新匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26369310/