Clojure:如何在正则表达式中使用变量?

时间:2012-01-07 12:17:41

标签: clojure

在正则表达式中使用变量的正确方法是什么? E.g:

(def var "/")
(split "foo/bar" #var)

应该给出

=> ["foo" "bar"]

但它不会这样。那我该怎么做?非常感谢你提前。

2 个答案:

答案 0 :(得分:12)

您可以使用re-pattern

(def var "/")                ; variable containing a string
(def my-re (re-pattern var)) ; variable string to regex

(clojure.string/split "foo/bar" my-re)

或者,使用线程最后一个宏:

(->> "/"
     (re-pattern)
     (clojure.string/split "foo/bar"))

答案 1 :(得分:7)

(def my-re (java.util.regex.Pattern/compile "/")) ; to turn a string into a regex
;; or just
(def my-re #"/") ; if the regex can be a literal

(clojure.string/split "foo/bar" my-re)