clojure 新手指南(11):正则表达式

接着上篇,继续我们的时间和日期函数的探讨。我们可以定义一个函数,将一个日期字符串分成一个列表。列表元素分别为年、月、日、时、分、秒。为了完成这个字符串分割操作,我们使用“re-split‘函数。re-split函数需要一个正则表达式参数用于确定如何分割字符串。Clojure 依赖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没什么关系了。

转载于:https://my.oschina.net/clopopo/blog/143294

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值