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没什么关系了。
相关文章
相关标签/搜索