Java正则表达式详解(3)

原创 2007年10月12日 16:34:00
二、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时,上述三个方法的语法如下:
· boolean matches(PatternMatcherInput input, Pattern pattern)
· boolean matchesPrefix(PatternMatcherInput input, Pattern pattern)
· boolean contains(PatternMatcherInput input, Pattern pattern)
 

Java学习系列(二十四)Java正则表达式详解

正则表达式可以说是用来处理字符串的一把利器,它是一个专门匹配n个字符串的字符串模板,本质是查找和替换。在实例演示之前先了解一下Pattern、Matcher这两个工具类,Pattern:编译好的带匹配...
  • JAVE_LOVER
  • JAVE_LOVER
  • 2015年05月05日 17:22
  • 6381

java正则表达式与String类完全解析

String类是不可变的,很多时候我们在使用String时已经将他看做了一种基本类型。也的确是如此,在整个java体系中只有两个重载的操作符:String类的+和+=。可见对String的重视程度。字...
  • QuinnNorris
  • QuinnNorris
  • 2017年03月11日 18:00
  • 1417

超级详细的Java正则表达式----学习学习!

(我始终认为,一些东西是需要理论化的,是需要系统的学一下的,虽然可能随着经验的积累这些东西都会在实践中学会,但那需要付出时间的代价太大,不如主动系统的学一下。) Java正则表达...
  • Happy_wu
  • Happy_wu
  • 2016年06月13日 19:59
  • 4822

Java 正则表达式详解

Java 提供了功能强大的正则表达式API,在java.util.regex 包下。本教程介绍如何使用正则表达式API。 正则表达式 一个正则表达式是一个用于文本搜索的文本模式。换句话说,...
  • hj7jay
  • hj7jay
  • 2016年05月04日 09:26
  • 1192

Python3 如何优雅地使用正则表达式(详解一)

注:本文翻译自 Regular Expression HOWTO,小甲鱼童鞋对此做了一些注释和修改。 正则表达式介绍 正则表达式(Regular expressions 也称为 R...
  • goodboy5201314
  • goodboy5201314
  • 2015年01月12日 14:23
  • 3113

Java 正则表达式中的懒惰匹配

最近在搞一个手机应用,其中一部分涉及到了webservice,由于webservice这部分也是自己做,所以在取回数据的时候,需要自己解析数据。 返回的数据是jason格式,关于jason格式的包应...
  • xueerfei008
  • xueerfei008
  • 2013年05月17日 13:55
  • 3688

Java正则表达式Pattern和Matcher详解

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。 它...
  • u011225629
  • u011225629
  • 2015年09月09日 20:25
  • 1876

JAVA正则表达式语法大全

1 [正则表达式]文本框输入内容控制 2 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 3 只能输入数字:"^[0-9]*$"。 4 只能输入n位的数字:"^\d{n}...
  • daniel7443
  • daniel7443
  • 2016年05月05日 09:42
  • 2017

正则表达式之限定符

我们知道正则表达式中的元字符一次一般只能匹配一个位置或一个字符,如果要匹配一个或       零个或多个字符的时候,则需要使用限定符了。限定符就是允许特定字符或字符集合自身重复出      ...
  • kiritor
  • kiritor
  • 2013年03月28日 13:56
  • 2356

正则表达式 特殊构造用法

问题: 查找不能有字符串abc的匹配 正则表达式 字符串 结果 r'a(?=bbb)' abbb a r'abbb' abbb abbb python 2.7 文档说明 htt...
  • a519640026
  • a519640026
  • 2017年07月26日 18:08
  • 164
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java正则表达式详解(3)
举报原因:
原因补充:

(最多只允许输入30个字)