图五:匹配所有Moth DD,YYYY名目标日期
新呈现的“/s”标记是空缺标记,匹配所有的空缺字符,包罗Tab字符。假如字符串正确匹配,接下来如何提取出月份部门呢?只需在月份周围加上一个圆括号建设一个组,然后用ORO API(本文后头具体接头)提取出它的值。修改后的正则表达式如图六所示:
图六:匹配所有Month DD,YYYY名目标日期,界说月份值为第一个组
1.7 其它标记
为轻便起见,你可以利用一些为常见正则表达式建设的快捷标记。如表二所示:
表二:常用标记
譬喻,在前面社会安详号码的例子中,所有呈现“[0-9]”的处所我们都可以利用“/d”。修改后的正则表达式如图七所示:
图七:匹配所有123-12-1234名目标社会安详号码
二、Jakarta-ORO库
有很多源代码开放的正则表达式库可供Java措施员利用,并且它们中的很多支持Perl 5兼容的正则表达式语法。我在这里选用的是Jakarta-ORO正则表达式库,它是最全面的正则表达式API之一,并且它与Perl 5正则表达式完全兼容。别的,它也是优化得最好的API之一。
Jakarta-ORO库以前叫做OROMatcher,Daniel Savarese大方地把它赠送给了Jakarta Project。你可以凭据本文最后参考资源的说明下载它。
我首先将扼要先容利用Jakarta-ORO库时你必需建设和会见的工具,然后先容如何利用Jakarta-ORO API。
▲ PatternCompiler工具
首先,建设一个Perl5Compiler类的实例,并把它赋值给PatternCompiler接口工具。Perl5Compiler是PatternCompiler接口的一个实现,答允你把正则表达式编译成用来匹配的Pattern工具。
▲ Pattern工具
要把正则表达式编译成Pattern工具,挪用compiler工具的compile()要领,并在挪用参数中指定正则表达式。譬喻,你可以凭据下面这种方法编译正则表达式“t[aeio]n”:
默认环境下,编译器建设一个巨细写敏感的模式(pattern)。因此,上面代码编译获得的模式只匹配“tin”、“tan”、 “ten”和“ton”,但不匹配“Tin”和“taN”。要建设一个巨细写不敏感的模式,你应该在挪用编译器的时候指定一个特另外参数:
建设好Pattern工具之后,你就可以通过PatternMatcher类用该Pattern工具举办模式匹配。
▲ PatternMatcher工具
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时,上述三个要领的语法如下: