当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

clojure-基本语法-正则表达式

发表于: 2013-03-12   作者:Dead_knight   来源:转载   浏览次数:
摘要: 一、创建正则表达式 re-pattern函数: 函数 (re-pattern) 接受一个字符串参数,返回一个正则表达式样式(java.util.regex.Pattern类的实例)。这个样式能用于正则表达式匹配 user=> (re-pattern "\\d+") #"\d+" 也可以使用读取宏来直接用文本的方式输入正则表达式
一、创建正则表达式

re-pattern函数:
函数 (re-pattern) 接受一个字符串参数,返回一个正则表达式样式(java.util.regex.Pattern类的实例)。这个样式能用于正则表达式匹配
user=> (re-pattern "\\d+")
#"\d+"

也可以使用读取宏来直接用文本的方式输入正则表达式:在字符串前使用#符号。和用re-pattern函数生成的一样,例如,下面的表示方式和前面的例子是相同的:
user=> #"\\d+"
#"\d+"


re-matcher函数:
re-matcher函数接受两个参数:一个正则表达式样式和一个字符串。返回一个有状态的"matcher"对象,提供给其它正则函数而不是直接提供样式。Matchers是java.util.regex.Matcher.类的实例。
user=> (re-matcher #"\d+" "abc12345def")
#<Matcher java.util.regex.Matcher[pattern=\d+ region=0,11 lastmatch=]>
user=> (def matcher-num (re-matcher #"\d+" "abc12345def"))
#'user/matcher-num
user=> (re-find matcher-num)
"12345"

这里的def函数用于定义变量,后面会描述

二、使用正则表达式:
re-find函数:
re-find接受一个样式与一个字符串或者一个matcher。每次调用,返回matcher中下一个符合正则匹配的结果。
user=> (re-find #"\d+" "abc123")
"123"


re-matches函数:
re-matches接受两个参数:一个正则表达式样式和一个字符串。返回任何和正则表达式样式匹配的字符串,如果没有匹配则返回nil。例如下面的代码:
user=> (re-matches #"hello" "hello,world")
nil
user=> (re-matches #"hello.*" "hello,world")
"hello,world"
user=> (re-matches #"hello,(.*)" "hello,world")
["hello,world" "world"]


re-seq函数:
re-seq接受一个样式与一个字符串。它返回一个使用永久匹配(matcher)的lazy sequence(懒序列)(这个sequence在一个连续的样式匹配的字符串中)
user=> (re-seq #"\d" "clojure 1.1.0")
("1" "1" "0")
user=> (re-seq #"\w+" "mary had a little lamb")
("mary" "had" "a" "little" "lamb")


re-groups函数:
接受一个matcher,返回从接近的发现与匹配的集合。如果没有嵌套集合,则返回一个完全匹配的字符串。如果有嵌套集合,则返回vector集合,第一个元素是完全匹配的(非嵌套)
user=> (def phone-number "672-345-456-3212")
#'user/phone-number
user=> (def matcher (re-matcher #"((\d+)-(\d+))" phone-number))
#'user/matcher
user=> (re-find matcher)
["672-345" "672-345" "672" "345"]
user=> (re-groups matcher)
["672-345" "672-345" "672" "345"]

clojure-基本语法-正则表达式

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
代码下载地址:http://www.zuidaima.com/share/1835085544524800.htm 原文:java正则表达式语法详解
没有后查功能,它只实现了前查:(?=E)、(?!E),没有实现(?<=E)、(?<!E) ,查找文字不够方便,
turnmissile 的 Blog http://blog.csdn.net/turnmissile/ Microsoft已经把正则表达式的规则收录在了m
语法 表达式说明 . 任何单个字符,用作换行符 (\n) 以外的任何单个打印或非打印字符的通配符。 例如
1 正则表达式 1 最基础: 要找一个数字,它可能有一个负号在前面,那么就写上一个负号加上一个问号
1.去RegexKitLite下载类库,解压出来会有一个例子包及2个文件,其实用到的就这2个文件,添加到工程
1. 正则表达式规则 1.1 普通字符 字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号
进入 JavaScript 第一章 基本语法 4~7节 JavaScript 第一章 基本语法 1~3节 1 、为什么学习 JavaScr
上一篇博客简单介绍了,Javascript这门脚本语言的概述,这篇我们学们学习一下它的基础知识。这里我
原文作者:Karthik Viswanathan 原文链接:Crucial Concepts Behind Advanced Regular Expressions
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号