JAVA正则表达式:Pattern类与Matcher类详解.docx

JAVA正则表达式:Pattern类与Matcher类详解.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA正则表达式:Pattern类与Matcher类详解

JAVA正则表达式:Pattern类与Matcher类详解java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式。 Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。以下我们就分别来看看这两个类:一、捕获组的概念捕获组可以通过从左到右计算其开括号来编号,编号是从1 开始的。例如,在表达式 ((A)(B(C)))中,存在四个这样的组:1??? ??? ((A)(B(C)))2??? ??? (A)3??? ??? (B(C))4??? ??? (C)组零始终代表整个表达式。 以 (?) 开头的组是纯的非捕获 组,它不捕获文本,也不针对组合计进行计数。与组关联的捕获输入始终是与组最近匹配的子序列。如果由于量化的缘故再次计算了组,则在第二次计算失败时将保留其以前捕获的值(如果有的话)例如,将字符串aba 与表达式(a(b)?)+ 相匹配,会将第二组设置为 b。在每个匹配的开头,所有捕获的输入都会被丢弃。二、详解Pattern类和Matcher类java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现(建议在阅读本文时,打开java API文档,当介绍到哪个方法时,查看java API中的方法说明,效果会更佳).?Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pplie(String regex)简单工厂方法创建一个正则表达式,?Java代码示例:?Pattern p=Ppile(\\w+);?p.pattern();//返回 \w+?pattern() 返回正则表达式的字符串形式,其实就是返回Pplile(String regex)的regex参数1.Pattern.split(CharSequence input)Pattern有一个split(CharSequence input)方法,用于分隔字符串,并返回一个String[],我猜String.split(String regex)就是通过Pattern.split(CharSequence input)来实现的.?Java代码示例:?Pattern p=Ppile(\\d+);?String[] str=p.split(我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@);?结果:str[0]=我的QQ是: str[1]=我的电话是: str[2]=我的邮箱是:aaa@?2.Pattern.matcher(String regex,CharSequence input)是一个静态方法,用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串.Java代码示例:?Pattern.matches(\\d+,2223);//返回true?Pattern.matches(\\d+,2223aa);//返回false,需要匹配到所有字符串才能返回true,这里aa不能匹配到?Pattern.matches(\\d+,22bb23);//返回false,需要匹配到所有字符串才能返回true,这里bb不能匹配到?3.Pattern.matcher(CharSequence input)说了这么多,终于轮到Matcher类登场了,Pattern.matcher(CharSequence input)返回一个Matcher对象.Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例.?Pattern类只能做一些简单的匹配操作,要想得到更强更便捷的正则匹配操作,那就需要将Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持.?Java代码示例:?Pattern p=Ppile(\\d+);?Matcher m=p.matcher(22bb23);?m.pattern();//返回p 也就是返回该Matcher对象是由哪个Pattern对象的创建的?4.Matcher.matches()/ Matcher.lookingAt()/ Matcher.find()Matcher类提供三个匹配操作方法,三个方法均返回boolea

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档