站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题使用JDK 1.4中的regex软件包

使用JDK 1.4中的regex软件包

摘要: 使用JDK 1.4中的regex软件包
<table width="100%" height="92%" border="0" cellpadding="6" cellspacing="0"> <tr> <td height="623" align="left" valign="top" class="content"> Regular expressions(正则表达式)曾经是Perl的功能强大的工具。然而,现在的Java开发人员可以充分地利用JDK 1.4中的java.util.regex package。java.util.regex软件包包含以下三个方面的类:

模式类??模式对象是正则表达式的编译之后版本;
匹配器类??可以使用一个匹配器对象来代表一个模式对象;
模式语法异常??一个模式语法异常对象包含在正则表达式中的任何一个语法错误。
更多正则表达式的内容
在获取并熟悉Java regex软件包之前,你应该对正则表达式的使用有深刻的理解,以下内容都囊括了这一方面的主题:

《揭开正则表达式语法的神秘面纱》
《使用Perl正则表达式能够提高效率》

--------------------------------------------------------------------------------

基于java.util.regex软件包,这一篇文章将讲述如何在Java中使用正则表达式的方法,集中讲解量词,分界匹配器的用法。你可以从这里下载这些范例的源代码。

Java也提供了一些使用正则表达式的简化的预定义的字符类,例如,d表示0到9的数字,你可以从这里获取这些预定义的字符类的详细内容。

在Java中应用正则表达式
如下所示,你可以构建一个模式对象来代表一个正则表达式,如[abc]:

String regularExpression = "[abc]";
Pattern pattern = Pattern.compile(regularExpression);


Java没有直接使用正则表达式字符串,而是通过使用Pattern.compile()方法。请注意不要采用模式的构造函数来构建模式对象。

通过使用模式对象,一个匹配器对象可以用正则表达式构建处理字符串。下面的语句说明了如何处理“This is as easy as abc.”字符串,这一过程使用了模式对象的matcher()方法。

String myContent = "This is as easy as abc.";
Matcher matcher = pattern.matcher(myContent);


第一行语句编译一个包含一个或多个逗号,空格的正则表达式。字符串包含",", ", ", " "等。正则表达式[,\s]+代表一个逗号或任一空格字符。所以模式对象代表一个逗号,空格,或者带有空格的逗号。
量词
量词指定了一个模式出现的次数。这就可以让我们控制一个模式在使用字符串时出现的次数,表A总结了如何使用量词。

表A

期望的量词 勉强的量词 私有量词 X式出现次数
X? X?? X?+ X, 一次可没有
X* X*? X*+ X, 0或多次
X+ X+? X++ X, 1多次
X{n} X{n}? X{n}+ X, 正好n次
X{n,} X{n,}? X{n,}+ X, 最少 n 次
X{n,m} X{n,m}? X{n,m}+ X, 最少n次但不会多于m次

前面3列中的正则表达式代表着X循环中字符串出现的次数,最后一列说明了对应正则表达式的含义。总之,具有三种量词方式来指定每一种模式出现的类型,这三种量词方式在使用上也有所不同。在讲述它们之间的差异时,理解量词中匹配字符的使用方法是非常重要的。


通用的量词是{n,m},n和m是整数,X{n,m}表示X循环中字符串出现的次数为c至少n次但不会大于m次。例如,X{3,5}包含着XXX,XXXX,XXXXX。对于量词的类型,我们可以使用以下方式:

X{n,} 代表 X{n, infinity}
X{n}代表X{n,n}
X+代表X{1,infinity}
X*代表X{0, infinity}
X? 代表X{0, 1}
虽然我们可以采用以上的匹配字符串的方法来控制字符出现的次数,我们也可以采用其他的方法把字符和正则表达式进行匹配。这是不再详述。

边界匹配器
通过使用一个模式,一个模式出现的次数,一组字符串,正则表达式可以指定一个字符串中的一个模式的位置。我们可以采用边界匹配器来实现这个目的。表D列举了Java中的边界匹配器。

表D

边界匹配器 含义
^ 一行的开头
$ 一行的末尾
 字边界
B 非字边界
A 输入字符的开头
G 前一个匹配的末尾
 输入字符串的末尾(包括最后的结束符)
z 输入字符串的末尾

你可以单独或结合地使用这些边界匹配器。例如,^java$表示在java开始和结束的字符,即java之间的字符。你也可以通过一些Java程序来掌握这些边界匹配器的用法。

结论
我期望我能够为大家提供Java 1.4中正则表达式方面的总的概述。以后的章节将会涵盖一些更高级的话题,包括Unicode blocks和POSIX字符等。




摘自:ZDnet   时间:2003年9月10日
 </td> </tr> </table></td> </tr> </table>
↑返回目录
前一篇: 构造Jsp/javabean开发和发布环境的简单办法
后一篇: Windows 2000中如何配置JDK