为什么我不能分开“|”在clojure

时间:2018-05-25 02:49:22

标签: regex clojure

我正在尝试在 clojure Hello|World”中拆分字符串,但是当使用拆分方法“(clojure.string/split x #"|")”时,我得到了一个奇怪的结果,我得到了这个{{ 1}}。任何人都可以告诉我为什么会这样做以及如何将其拆分以获得"[h e l l o | w o r l d]"

1 个答案:

答案 0 :(得分:6)

以下是答案:

(str/split "Hello|World" #"|")  => ["H" "e" "l" "l" "o" "|" "W" "o" "r" "l" "d"]
(str/split "Hello World" #" ")  => ["Hello" "World"]
(str/split "Hello|World" #"\|") => ["Hello" "World"]

在正则表达式中,|字符是特殊的,需要使用反斜杠\进行转义。

|字符是正则表达式中的逻辑运算符,通常用于表示“或”,如“abc | def”:

(str/split "Hello|World" #"e|o") => ["H" "ll" "|W" "rld"]

由于你没有其他东西存在,它似乎被解释为“任何东西或任何东西”,所以它匹配每个角色之间的边界。

See the Java docs了解更多信息。