正则表达式"(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。
许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级"搜索-替换"功能。那么Java又怎样呢?
你可以从Apache.org下载源代码开放的Jakarta-ORO库。
我首先将简要介绍使用Jakarta-ORO库时你必须创建和访问的对象,然后介绍如何使用Jakarta-ORO API。 创建一个Perl5Compiler类的实例,并把它赋值给PatternCompiler接口对象。Perl5Compiler是PatternCompiler接口的一个实现,允许你把正则表达式编译成用来匹配的Pattern对象。 要把正则表达式编译成Pattern对象,调用compiler对象的compile()方法,并在调用参数中指定正则表达式。例如,你可以按照下面这种方式编译正则表达式"j[so]n": 默认情况下,编译器创建一个大小写敏感的模式(pattern)。因此,上面代码编译得到的模式只匹配"jsn"、"jon",但不匹配"Jsn"和"joN"。
要创建一个大小写不敏感的模式,你应该在调用编译器的时候指定一个额外的参数: PatternMatcher对象根据Pattern对象和字符串进行匹配检查。你要实例化一个Perl5Matcher类并把结果赋值给PatternMatcher接口。Perl5Matcher类是PatternMatcher接口的一个实现,它根据Perl 5正则表达式语法进行模式匹配: 使用PatternMatcher对象,你可以用多个方法进行匹配操作,这些方法的第一个参数都是需要根据正则表达式进行匹配的字符串:
- boolean matches(String input, Pattern pattern):当输入字符串和正则表达式要精确匹配时使用。换句话说,正则表达式必须完整地描述输入字符串。
- boolean matchesPrefix(String input, Pattern pattern):当正则表达式匹配输入字符串起始部分时使用。
- boolean contains(String input, Pattern pattern):当正则表达式要匹配输入字符串的一部分时使用(即,它必须是一个子串)。
另外,在上面三个方法调用中,你还可以用PatternMatcherInput对象作为参数替代String对象;这时,你可以从字符串中最后一次匹配的位置开始继续进行匹配。当字符串可能有多个子串匹配给定的正则表达式时,用PatternMatcherInput对象作为参数就很有用了。用 PatternMatcherInput对象作为参数替代String时,上述三个方法的语法如下:
- boolean matches(PatternMatcherInput input, Pattern pattern)
- boolean matchesPrefix(PatternMatcherInput input, Pattern pattern)
- boolean contains(PatternMatcherInput input, Pattern pattern) Perl5Util查找格式:
[ m ] / pattern / [ i ][ m ][ s ][ x ]
第一个m写不写都可以
i 忽略大小写
m 多行模式
s 单行模式
x 使用扩展语法
查找 MyDoc/Java/SimpleJava 时
正常写法 "m/MyDoc
/Java/SimpleJava/"
扩展写法 "m#MyDoc/Java/SimpleJava#x"
例:查找字符串中包含的数字,匹配一次或多次 例:分组输出 Perl5Util util = new Perl5Util(); PatternMatcherInput matcherInput = new PatternMatcherInput("192.168.0.1@08/10/2010"); while (util.match("m#08(/10/)2010#x", matcherInput)) { MatchResult result = util.getMatch(); System.out.printf("%s : %s\n", 0, result.group(0)); System.out.printf("%s : %s\n", 1, result.group(1)); } 输出: 0 : 08/10/2010 1 : /10/
Perl5Util替换格式:
s / pattern / replacement / [ g ][ i ][ m ][ o ][ s ][ x ]
第一个s必须要写
g 全部替换。默认只替换第一个
i 忽略大小写
m 多行模式
o 只替换第一个
s 单行模式
x 使用扩展语法
例:替换,将"-"替换成","全局搜索 注:Java5的正则表达式的实现可能会导致JVM的崩溃;在递归处理上性能极度低下.最好用oro库来解决这类问题。详见宝典 . 匹配任意字符 * 修饰匹配符为0次任意次
^ 匹配输入行的开始位置 $ 匹配输入行的结束位置
+ 修饰匹配符至少1次 ? 修饰匹配符0次或1次
[] 用来自定义匹配"多种字符"表达式 {} 修饰匹配次数的符号
\s 空格 \S 非"空格"字符
\d 匹配任何一个0-9数字 \D 匹配一个非0-9数字
\w 匹配一个 数字、字母或下划线 \W 匹配一个非 数字、字母和下划线
*? 非贪婪修饰匹配符为0次任意次 +? 非贪婪修饰匹配符至少一次
?? 非贪婪修饰匹配符0次或1次 () 把一个表达式做为一个匹配整体
| 两边的表达式为"或"的关系
在正则表达式中对一些特殊符号和特殊含义的字符的使用需要用"\"进行转义操作,需要转义的字符除了包括以上列出的"元字符"外,还有以下这些具有具体含义的字符: 用在正则表达式结尾。例如 /asdf/i,"i"即为"修饰符",意思是不区分大小写的匹配"asdf"。所有修饰符的含义如下表: g 全局匹配 i 忽略大小写
m 多行匹配 s 把整个匹配串当作一行处理
x 允许注释和空格的出现
jakarta-oro包下载:http://jakarta.apache.org/site/downloads/downloads _oro.cgi http://www.360doc.com/content/10/0805/09/561_43777 969.shtml
发表评论
-
C字符串分割
2012-07-06 09:51 1000来自:http://hi.baidu.com/alexin ... -
Source insight使用之正则表达式
2012-07-06 09:44 33211.正则表达式中必须包含群组,即\(\)包含的部分。这部分 ... -
Flex 4 新体验
2012-07-06 09:29 653直到最近才开始真 ... -
分页无刷新
2012-07-05 20:44 757var pageSize=3,currentPageNum ... -
核心Swing组件(七)
2012-07-03 13:42 844最后一个基本的Swing组件是JPanel组件。JPane ... -
核心Swing组件(七)
2012-07-03 12:15 556最后一个基本的Swing组件是JPanel组件。JPane ... -
FLEX实现关于
2012-07-02 10:10 622about.mxml List { backg ... -
Flex button icon动态设置
2012-07-02 10:09 612前段时间写了个datagrid的多列下拉选取控件: Mul ... -
flex cairngorm项目实战
2012-07-02 10:09 677项目功能与界面模仿阿布网站 系统功能: 新闻管 ... -
flex 客户端缓存 module swf
2012-07-02 10:09 783flex或者flash客户端 ... -
flex ant
2012-07-02 09:41 610... -
FLEX 条形图(柱状图)设置刻度为百分比
2012-07-01 09:26 1107作者原创,如需转载请注明出处:www.krzone.org ... -
谈谈我对未来的想法吧
2012-07-01 09:26 610来总行珠海研发中 ... -
JavaFX Script With Eclipse 入门
2012-07-01 09:26 672最近Java社区最火的就是JavaFX Script的发布 ... -
Linux网络入侵检测软件
2012-07-01 09:26 1319本软件是本人的毕业设计"作品"。当年是 ... -
Spring 3.0 整合 iBatis 3 Beta10 配置
2012-07-01 09:26 806弄了好长时间了,上网找各种资料,文档,最后发现Spring ... -
Flex Builder在卷接机组监控机中的应用―JSJ论文[网转]
2012-06-30 11:13 578Flex Builder在卷接机组监控机中的应用―JSJ论文[ ... -
Flex+PHP RIA应用开发实战详解
2012-06-30 11:13 751Flex+PHP RIA应用开发实战详解 2011年05月1 ... -
Flex 3.0程序开发技术详解
2012-06-30 11:13 612Flex 3.0程序开发技术详解 2011年05月10日 ... -
flex中设置Asserts.swc运行时类库的图片符号
2012-06-30 11:13 642flex中设置Asserts.swc运行时类库的图片符号 2 ...
相关推荐
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...
常用正则表达式 正则表达式 常用正则表达式 正则表达式
正则表达式,正则表达式,正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式
正则表达式.rar正则表达式.rar正则表达式.rar正则表达式.rar
《学习正则表达式》从正则表达式的基本概念讲起,到编写完整的sed和Perl脚本,再到转换HTML文件,将这种强大的工具解释得清晰透彻。...《学习正则表达式》适合对正则表达式感兴趣的程序员和互联网从业者。
正则表达式验证工具 V1.0 本软件主要用于检测正则表达式是否正确。 运行环境:本软件为绿色软件,无需安装,但需要Microsoft .NET Framework 4 支持,如果没有请前去下载(下载路径:...
正则表达式日期校验 正则表达式日期校验 正则表达式日期校验
正则表达式正则表达式正则表达式正则表达式 验证程序
正则表达式帮助 有用的正则表达式帮助 有用的正则表达式帮助 有用的正则表达式帮助 有用的
Java正则表达式Java正则表达式Java正则表达式Java正则表达式
《正则表达式经典实例》讲解了基于8种常用的编程语言使用正则表达式的经典实例。书中提供了上百种可以在实战中使用的实例,以帮助读者使用正则表达式来处理数据和文本。对于如何使用正则表达式来解决性能不佳、误报...
Excel正则小工具? ● 正则提取,替换,定位,筛选 ● 一个Excel、Wps表格内容处理的效率脚本程序 ● 初始热键Win + z(可自定义修改) 如果你办公时经常使用 Office 的 Excel 或 WPS 表格,并且经常需要处理数据...
常用正则表达式大全.txt常用正则表达式大全.txt常用正则表达式大全.txt常用正则表达式大全.txt常用正则表达式大全.txt
正则表达式 详解 基础 正则表达式之道(A Tao of Regular Expressions)
正则表达式速查 正则表达式举例 正则表达式学习 (4页A4纸)
正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式...
正则表达式总结正则表达式总结正则表达式总结正则表达式总结正则表达式总结正则表达式总结
UE正则表达式、UE正则表达式
日期正则表达式(很实用) 日期正则表达式(很实用)日期正则表达式(很实用)日期正则表达式(很实用)
正则表达式 正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式