> (clojure.string/split "clojure.org" #"\\.")
["clojure.org"]
Run Code Online (Sandbox Code Playgroud)
我读过src split是
(defn split
"Splits string on a regular expression. Optional argument limit is
the maximum number of splits. Not lazy. Returns vector of the splits."
{:added "1.2"}
([^CharSequence s ^Pattern re]
(LazilyPersistentVector/createOwning (.split re s)))
([ ^CharSequence s ^Pattern re limit]
(LazilyPersistentVector/createOwning (.split re s limit))))
Run Code Online (Sandbox Code Playgroud)
它Pattern.split在里面打电话.奇怪的是跟随代码工作,而Clojure没有
Pattern p = Pattern.compile("\\.");
System.out.println(Arrays.toString(p.split("clojure.org")));
# output
[clojure, org]
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
Pattern p = Pattern.compile("\\.");
Run Code Online (Sandbox Code Playgroud)
在Java中,"\\."是一个普通的字符串.因此,您必须转义反斜杠本身才能\在正则表达式中表示.
user=> (clojure.string/split "clojure.org" #"\.")
["clojure" "org"]
Run Code Online (Sandbox Code Playgroud)
在Clojure中,#"\."是正则表达式.模式中的反斜杠被视为自身(并且不需要使用额外的反斜杠进行转义)
以下网页将有所帮助.(在页面中找到"正则表达式")
http://clojure.org/reference/reader