忽略Clojure中的区分大小写

时间:2018-11-28 07:00:53

标签: regex string replace clojure

我有这段代码将所有商店的名称从ABC(或Abc ...)替换为XYZ

(def str1 "ABC store of JOHN")
(str/replace (str/lower-case str1) #"abc" "XYZ")

// output: XYZ store of john
// expected: XYZ store of JOHN

我不想像这样将所有字符串都小写。 但是在Clojure中,它不能使用带有i标志的正则表达式/abc/i来像其他语言一样忽略大小写。

哪种clojure正则表达式或clojure lib支持区分大小写?

2 个答案:

答案 0 :(得分:3)

  

但是在Clojure中,它不能使用正则表达式/ abc / i

是的,您可以:

(let [str1 "ABC store of JOHN"]
    (str/replace str1 #"(?i)abc" "XYZ"))

答案 1 :(得分:0)

Clojure使用的继承自Java的正则表达式语言略有不同,因此您需要按以下方式编写正则表达式:

(str/replace (str/lower-case str1) #"(?:abc)" "XYZ")

输出"XYZ store of john"

您可以在JDK documentation for Pattern class中找到Java的正则表达式语言的说明。