



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java中使用正则表达式实现字符串匹配巧巧电脑网络2005-12-25收藏此文大中小分享到QQ空间人人网开心网豆瓣新浪微博腾讯微博更多0java的java.util.regex包按照面向对象的思路,把希望查询的字符串如is、thing或ting封装成一个对象,以这个对象作为模板去匹配一段文字,就更加自然了。思路清楚了。黑暗岁月有一个String,如何查询其中是否有y和f字符?最黑暗的办法就是:程序1:我知道if、for语句和charAt()啊。class Testpublic static void main(String args) String str=For my money, the important thing +about the meeting was bridge-building;char x=y;char y=f;boolean result=false;for(int i=0;istr.length;i+)char z=str.charAt(i); /System.out.println(z);if(x=z|y=z) result=true;break;else result=false;System.out.println(result);好像很直观,但这种方式难以应付复杂的工作。如查询一段文字中,是否有is?是否有thing或ting等。这是一个讨厌的工作。Java的java.util.regex包按照面向对象的思路,把希望查询的字符串如is、thing或ting封装成一个对象,以这个对象作为模板去匹配一段文字,就更加自然了。作为模板的那个东西就是下面要讨论的正则表达式。先不考虑那么复杂,看一个例子: 程序2:不懂。先看看可以吧?importjava.util.regex.*;class Regex1public static void main(String args) String str=For my money, the important thing +about the meeting was bridge-building;String regEx=a|f; /表示a或fPattern p=Ppile(regEx);Matcher m=p.matcher(str);boolean result=m.find();System.out.println(result);如果str匹配regEx,那么result为true,否则为flase。如果想在查找时忽略大小写,则可以写成:Pattern p=Ppile(regEx,Pattern.CASE_INSENSITIVE);虽然暂时不知道Pattern(模板、模式)和Matcher(匹配器)的细节,程序的感觉就比较爽,如果先查询is、后来又要查询thing或ting,我们只需要修改一下模板Pattern,而不是考虑if语句和for语句,或者通过charAt()。1、写一个特殊的字符串正则表达式如a|f。2、将正则表达式编译成一个模板:p3、用模板p去匹配字符串str。思路清楚了,现在看Java是如何处理的(Java程序员直到JDK1.4才能使用这些类。Pattern类与查找public final class java.util.regex.Pattern是正则表达式编译后的表达法。下面的语句将创建一个Pattern对象并赋值给句柄p:Pattern p=Ppile(regEx);有趣的是,Pattern类是final类,而且它的构造器是private。也许有人告诉你一些设计模式的东西,或者你自己查有关资料。这里的结论是:Pattern类不能被继承,我们不能通过new创建Pattern类的对象。因此在Pattern类中,提供了2个重载的静态方法,其返回值是Pattern对象(的引用)。如:public static Pattern compile(String regex) return new Pattern(regex, 0);当然,我们可以声明Pattern类的句柄,如Pattern p=null;p.matcher(str)表示以用模板p去生成一个字符串str的匹配器,它的返回值是一个Matcher类的引用,为什么要这个东西呢?按照自然的想法,返回一个boolean值不行吗?我们可以简单的使用如下方法:boolean result=Ppile(regEx).matcher(str).find();其实是三个语句合并的无句柄方式。无句柄常常不是好方式。后面再学习Matcher类吧。先看看regEx这个怪咚咚。正则表达式之限定符正则表达式(Regular Expression)是一种生成字符串的字符串。晕吧。比如说,String regEx=me+;这里字符串me+能够生成的字符串是:me、mee、meee、meeeeeeeeee等等,一个正则表达式可能生成无穷的字符串,所以我们不可能(有必要吗?)输出正则表达式产生的所有东西。反过来考虑,对于字符串:me、mee、meee、meeeeeeeeee等等,我们能否有一种语言去描述它们呢?显然,正则表达式语言是这种语言,它是一些字符串的模式简洁而深刻的描述。我们使用正则表达式,用于字符串查找、匹配、指定字符串替换、字符串分割等等目的。生成字符串的字符串正则表达式,真有些复杂,因为我们希望由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)描述任意的字符串,而且要准确。先看几个正则表达式例子:程序3:我们总用这个程序测试正则表达式。import java.util.regex.*;class Regex1public static void main(String args) String str=For my money, the important thing ;String regEx=ab*;boolean result=Ppile(regEx).matcher(str).find();System.out.println(result);/tureab*能匹配a、ab、abb、abbb。所以,*表示前面字符可以有零次或多次。如果仅仅考虑查找,直接用a也一样。但想想替换的情况。 问题regEx=abb*结果如何?ab+能匹配ab、abb、abbb。等价于abb*。问题regEx=or+结果如何?or?能匹配o和or。? 表示前面字符可以有零次或一次。这些限定符*、+、?方便地表示了其前面字符(子串)出现的次数(我们用来描述): x*,零次或多次 0,拓展阅读:JAVA正则表达式4种常用功能正则表达式在字符串处理上有着强大的功能,sun在jdk1.4加入了对它的支持 下面简单的说下它
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业安全培训文案幼儿园课件
- FCN-338-LOXO-338-生命科学试剂-MCE
- 鹰潭事业单位笔试真题2025
- 农发行佳木斯市汤原县2025秋招半结构化面试15问及话术
- 2025年智能座舱交互系统在新能源汽车中的应用报告
- 平等待人课件
- 夜雨寄北课件图文
- 2025年新能源汽车智能座舱交互设计安全性能分析报告
- 消费与零售:2025年零售行业大数据分析与应用报告
- 平煤集团安全培训课件
- (正式版)JB∕T 14666-2024 钢质汽车转向节臂锻件 工艺规范
- CJ/T 158-2002 城市污水处理厂管道和设备色标
- 五年级上英语教案-Unit1 Lesson 4 What Do They Like to Do-冀教版
- (高清版)JTG 3810-2017 公路工程建设项目造价文件管理导则
- 热稳定校验(YJV铜缆)-李良胜
- 广东省深圳实验中学2023-2024学年高二上学期期中数学模拟试题
- DB11∕T 583-2022 扣件式和碗扣式钢管脚手架安全选用技术规程
- 食材配送服务质量保证方案
- 《缅甸概况》课件
- HG-T 20583-2020 钢制化工容器结构设计规范
- 危重患者抢救应急预案
评论
0/150
提交评论