2012-01-07 4 views
8

Каков правильный способ использования переменных в регулярном выражении? Например .:Clojure: Как использовать переменные в регулярных выражениях?

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

должен дать

=> ["foo" "bar"] 

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

ответ

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) 
+0

Вау, это было быстро! Большое спасибо! –

+17

(перерисовка «/») будет делать также, немного более кратким, чем (java.util.regex.Pattern/compile «/») – NielsK

+0

Ницца, спасибо большое. –

11

Вы можете использовать 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")) 
Смежные вопросы