Clojure: как использовать переменные в регулярных выражениях? - PullRequest
8 голосов
/ 07 января 2012

Как правильно использовать переменные в регулярном выражении? E.g.:

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

должно дать

=> ["foo" "bar"]

Но так не работает. Так как мне это сделать? Заранее большое спасибо.

Ответы [ 2 ]

12 голосов
/ 30 июня 2015

Вы можете использовать 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"))
7 голосов
/ 07 января 2012
(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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...