Using java.util.regex
通过 java.util.regex 使用正则表达式非常简单,功能由两个类,一个接口和一个unchecked exception组成。
就我个人来说,更喜欢简称前两个为“pattern”和“matcher”,许多时候我们只会用到这两个类。简单地说,Pattern 对象就是编译好的正则表达式,可以应用于任意多个字符串,Matcher对象则对应单独的实例,表示将正则表达式应用到某个具体的目标字符串上。
Java 1.5新提供的MatchResult,它封装了成功匹配的数据。匹配数据可以在下一次匹配尝试之前从Matcher本身获得,也可以提取出来作为MatchResult保存。
如果匹配尝试所使用的正则表达式格式不正确(例如,「[oops]」的语法就不正确),就会抛出PatternSyntaxException 异常。这是一个 unchecked exception,继承自 java.lang.IllegalAgumentException。
下面是一个完整的、详细的程序,示范了简单的匹配:
结果是‘matched [1st] from 12 to 15.’。在本章的所有例子中,我都用斜体表示变量名。如果这样声明,可以省略粗体部分:
import java.util.regex.*;
它应该放在程序的头部,和第3章的例子(☞95)一样。
这是标准的做法,而且程序更容易管理。本章的其他程序省略了import语句。
java.util.regex使用的对象模型与其他大多数语言不同。请注意,前面例子中的Matcher对象m,是通过把 Pattern对象和目标字符串联系起来得到的,它用来进行实际的匹配尝试(使用find方法),以及查询结果(使用group、start和end方法)。
这办法初看起来可能有点古怪,但你很快就能适应了。