clojure 新手指南(11):正則表達式

接着上篇,繼續咱們的時間和日期函數的探討。咱們能夠定義一個函數,將一個日期字符串分紅一個列表。列表元素分別爲年、月、日、時、分、秒。爲了完成這個字符串分割操做,咱們使用「re-split‘函數。re-split函數須要一個正則表達式參數用於肯定如何分割字符串。Clojure 依賴java的正則表達式庫來處理這些操做。 java

re-split函數是Clojure Contrib中字符串庫的一部分,因此這就須要確保你能訪問Clojure Contrib庫。你能夠用下面這種方式來加載字符串工具庫。(注意,記得進入REPL時要加載contrib.jar,忘了點這正則表達式

=> (use 'clojure.contrib.str-utils)
nil
一旦加載完庫,咱們就能夠使用re-split了:

=>(re-split #" "  "2011 06 04 17 50 21")
("2011" "06" "04" "17" "50" "21")

=>(class #" ")
java.util.regex.Pattern

=>(re-split #":"  "2011:06:04:17:50:21")
("2011" "06" "04" "17" "50" "21")
咱們上面用到的正則表達式很是直白。它們以」#「開頭,後面跟着包含須要匹配的正則模式。正則表達式很是複雜,不是本文重點,這裏只是講解clojure的相關用法。

讓咱們隨便看幾個例子: 函數

=>(re-split #"\:"  "2011:06:04:17:50:21")
("2011" "06" "04" "17" "50" "21")
方括號裏表明符合其中一個便可:

=>(re-split #"[\/\:]" "2011/06/04 17:51:00")
("2011" "06" "04 17" "51" "00")

最後咱們嘗試構建本身的日期元素列表函數date-list 工具

=>(defn date-list
    ([](re-split #"\W+" (format-date)))
    ([systime](re-split #"\W+" (format-date systime))))

=>(date-list)
("2011" "06" "05" "11" "21" "21")
本章沒什麼新內容,主要難點就在正則表達式上。不過這個和clojure沒什麼關係了。
相關文章
相關標籤/搜索