如何在clojure中按时段分割

Jia*_*Liu 1 java clojure

> (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)

我错过了什么吗?

nta*_*lbs 6

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