2013年6月7日星期五

笔记:common lisp 的正则库 cl-ppcre

common lisp 的正则库 cl-ppcre : http://weitz.de/cl-ppcre/ 
 
提取括号匹配内容到列表
 
* (scan-to-strings "(([^b])*)b" "aaabd")
"aaab"
#("aaa" "a")
 
提取括号匹配内容到指定变量
* (register-groups-bind (fname lname (#'parse-integer date month year))
      ("(\\w+)\\s+(\\w+)\\s+(\\d{1,2})\\.(\\d{1,2})\\.(\\d{4})" "Frank Zappa 21.12.1940")
    (list fname lname (encode-universal-time 0 0 0 date month year 0)))
("Frank" "Zappa" 1292889600) 

提取匹配内容到指定变量
* (all-matches-as-strings "\\w*" "foo bar baz")
("foo" "" "bar" "" "baz" "")
 
分割字符串
* (split "(\\s+)" "foo bar   baz")
("foo" "bar" "baz")
 
替换
* (regex-replace "(?i)fo+" "FOO bar" "frob")
"frob bar"
T
 
全部替换
* (regex-replace-all "(?i)f(o+)" "foo Fooo FOOOO bar" "fr\\1b" :preserve-case t)
"froob Frooob FROOOOB bar" 

字符串反引用,相当于perl里的quotemeta
* (quote-meta-chars "[a-z]*")
"\\[a\\-z\\]\\*"

没有评论:

发表评论