首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

13.12  小结

在本章中,你了解到正则表达式是根据字符串集合中每个字符串共享的共同特性,描述这个字符集合的一种方式。Java编程语义通过java.util.regex包支持正则表达式,主要通过Pattern、Matcher和PatternSyntaxException类。

l Pattern对象是正则表达式编译后的表示。Pattern类没有提供公共构造器。为了创建模式,必须调用它的public static compile方法之一,它们都会返回一个Pattern对象。

l Matcher对象是解释模式和对输入字符串进行匹配操作的引擎。和Pattern类一样,Matcher没有定义公共构造器。通过调用Pattern对象的Public matcher方法获得Matcher对象。

l PatternSyntaxException对象是不可控异常,指出正则表达式模式中的语法错误。

这个API支持的模式匹配的最基本形式是字符串字面量的匹配。也可以指定元字符——具有特殊含义的字符,由匹配器解释它们。

字符类是括在方括号内的字符集合。它指定将成功匹配给定输入字符串中的单一字符的字符。你可以定义自己的字符类,或者使用API中包含的预定义字符类。

量词允许你指定匹配出现的次数。有三种不同类型的量词greedy、reluctant和possessive:

l greedy量词被认为是“贪婪的”,因为试图进行第一个匹配之前,它们强制匹配器读完(或者说吃掉)整个输入字符串。如果第一个匹配尝试(整个输入字符串)失败,匹配器就会在输入字符串中后退一个字符并且再次尝试,重复这个过程,直到找到匹配或者没有更多剩下的字符可以后退为止。根据表达式中使用的量词,它最后试图匹配的内容是1个或者0个字符。

l reluctant量词采取相反的方式:它们从输入字符串的开头开始,然后逐步地一次读取一个字符搜索匹配。它们最后试图匹配的内容是整个输入字符串。

l possessive量词总是读完整个输入字符串,尝试一次(而且只有一次)匹配。和greedy量词不同,possessive从不后退,即使这样做能允许整体匹配成功。

捕获组提供把多个字符当作一个单元对待的方式。把字符括在括号内创建捕获组,并且按照从左到右的顺序,计算它们的前括号从而进行编号。输入字符串中和捕获组匹配的部分被保存在内存中,以便以后通过反向引用再次使用。反向引用在正则表达式中被指定为反斜线“\”,后面跟着一个数字,指出要再次使用的组的编号。

通过指定输入字符串中的匹配位置,边界匹配器使匹配更加精确。regex API提供用于如下位置的边界匹配器:一行的开头、一行的末尾、单词边界、非单词边界、输入的开头、输入的末尾和前一个匹配的末尾。

最后,你详细地学习了Pattern、Matcher和PatternSyntaxException类,了解了它们的附加功能,包括java.lang.String中和它们等同的方法。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论