《T正则表达式》PPT课件.ppt_第1页
《T正则表达式》PPT课件.ppt_第2页
《T正则表达式》PPT课件.ppt_第3页
《T正则表达式》PPT课件.ppt_第4页
《T正则表达式》PPT课件.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

正则表达式,作者:吴进,学习目标,简介,RegularExpressions(Regex)正则表达式是一种用来描述一定数量文本的模式,常用于:字符串匹配、查找和替换。正则表达式引擎是一种可以处理正则表达式的软件。通常,引擎是更大的应用程序的一部分。在软件世界,不同的正则表达式并不互相兼容。本教程会集中讨论Perl5类型的引擎,因为这种引擎是应用最广泛的引擎。同时我们也会提到一些和其他引擎的区别。许多近代的引擎都很类似,但不完全一样。,JDK中正则表达式简介,String类也增加了一些简单的依据正则表达式工作的方法。booleanmatches(Stringregex)stringreplaceAll(Stringregex,Stringreplacement)java.util.regex包是JDK处理正则表达式的包。主要提供两个类Pattern和Matcher。Pattern代表模式,可以预编译模式串进行多次匹配。Matcher匹配器,代表匹配结果状态机。它可以对目标串进行匹配、测试等调用并返回匹配结果。,使用Java测试正则表达式,Pattern的创建Patternpattern=Ppile(regex);依据正则表达式串构建一个可以复用的“模式”。Matcher的创建Matchermatcher=pattern.matcher(input);获得的匹配器有各种方法用于判断和获取匹配结果。,Matcher的主要方法,booleanmatches()尝试对整个目标字符展开匹配检测,也就是只有整个目标字符串完全匹配时才返回真值,等价的方法Pattern.matches(regex,input)。Matcherreset()重设该Matcher对象。Matcherreset(CharSequenceinput)重设该Matcher对象并且指定一个新的目标字符串。MatcherappendReplacement(StringBuffersb,Stringreplacement)将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里。StringBufferappendTail(StringBuffersb)将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。类包里的解释是:实现非终端追加和替换步骤。booleanfind()尝试在目标字符串里查找下一个匹配子串。booleanfind(intstart)重设Matcher对象,并且尝试在目标字符串里从指定的位置开始查找下一个匹配的子串。,Matcher的主要方法,Stringgroup()返回当前查找而获得的与组匹配的所有子串内容Stringgroup(intgroup)返回当前查找而获得的与指定的组匹配的子串内容intgroupCount()返回当前查找所获得的匹配组的数量。booleanlookingAt()检测目标字符串是否起始匹配。Patternpattern()返回该Matcher对象的现有匹配模式,也就是对应的Pattern对象。StringreplaceAll(Stringreplacement)将目标字符串里与既有模式相匹配的子串全部替换为指定的字符串。StringreplaceFirst(Stringreplacement)将目标字符串里第一个与既有模式相匹配的子串替换为指定的字符串。intstart()返回当前查找所获子串的开始字符在原目标字符串中的位置。intstart(intgroup)返回当前查找所获得的和指定组匹配的子串的第一个字符在原目标字符串中的位置。intend()返回当前匹配的子串的最后一个字符在原目标字符串中的索引位置。intend(intgroup)返回与匹配模式里指定的组相匹配的子串最后一个字符的位置。,匹配模式串,匹配模式串由各种文字符号构成。文字符号字符集合重复性锚定单词边界选择符组与反向引用匹配模式防止回朔先前向后查看条件测试分组引用,文字符号,表示单个字符,正则表达式中无特别限定的字符都表示本来含义。不可显示字符Tab,回车,换行等不可显示字符t,r,n特殊字符,表达式中有特定含义,也称作元字符,用于控制表达式特性的。$.|?*+(),字符集合,用括起的字符序列。abc表示a、b、c中的任何一个。a-z表示a-z中的任何一个。a-zA-Z_0-9表示所有字符(含大写)以及下划线和数字中的任何一个“a-zA-Z”=“a-z|A-Z”取反字符用于取反,表示不在某个序列的字符。0-9不能是数字。字符集合中的元字符只有四个“-”,其它为非特殊字符可以直接用。预定义字符类d代表数字,w代表单词字符,s代表空白字符,大写的表示反义。任意字符.表示任意字符,但是一般情况下不匹配换行符,可以通过控制表达式属性要求.也能代表换行符。,重复性,控制之前的字符、字符集合或者组的重复性。?:告诉引擎匹配前导字符0次或一次。事实上是表示前导字符是可选的。+:告诉引擎匹配前导字符1次或多次。*:告诉引擎匹配前导字符0次或多次。min,max表示最少min次,最多max次,3表示3次,0,与*相同,1,与+相同,,1与?相同。例解析,重复的贪婪性,正则引擎具备贪婪性,它会试图匹配尽可能多的结果再返回。使用?+*控制重复性时会尽量匹配后面的字符,改变贪婪性方式包括惰性字符控制,在重复字符后面增加个?号注意:X*?惰性可回朔X*+贪婪不可回朔,POSIX,POSIX风格定义p(a.matches(pLower);规范UNIX系统的标准,锚定,表示某个边界的起始和终止位。表示字符串开始$表示字符串结束在多行模式下和$可以表示每行的开始和结束绝对锚定A只匹配字符串开始位置Z只匹配字符串结束位置单词边界b表示单词边界,0长度匹配,构成单词的字符之前或之后都匹配,B表示非单词边界,不构成单词的字符、空白等都匹配。,matches_find_lookingAt,find查找子串是否匹配,与matches一起使用有其特定问题,注意分析lookingAt查找字符串是否起始匹配Patternp=Ppile(d3,5);Strings=123-34345-234-00;Matcherm=p.matcher(s);p(m.matches();m.reset();p(m.find();p(m.find();p(m.find();p(m.find();p(m.lookingAt();p(m.lookingAt();p(m.lookingAt();p(m.lookingAt();,start_end,intstart()返回匹配的初始下标。intend()返回最后匹配字符之后的下标。注:如果找不到,将报异常,String_Replacement替换,Pattern.属性CASE_INSENSITIVE大小写不敏感MULTILINE多行模式DOTALL点匹配所有模式例备注:javaJavaJAVaJaVaIloveJAVAhatejAvAabcdefg.replaceAll(java,JAVA)booleanfind()/相当于hasNext()Stringgroup()/相当于next()StringreplaceAll(Stringreplacement)StringreplaceFirst(Stringreplacement)MatcherappendReplacement(StringBuffersb,Stringreplacement)StringBufferappendTail(StringBuffersb)flags的简写p(JaVa.matches(?i)(java);,组,使用()分组,可以对分组控制重复性。例备注原子组表示匹配不成功直接回朔到前一个模式。(?abc)d如果匹配ababdabcabcd不成功,不会不断回朔上个字符,而是直接回朔到字符串开头,接着匹配失败。,组的向后引用,数字引用之前定义的组,0引用第一个定义的组、1引用第二个定义的组例如:*.*?一个向后引用不能用于它自身(abc1),不正确向后引用不能用于字符集内部(a)1b,不正确例备注,组的向前和向后查看,向前查看与向后查看,表示先肯定前或后能匹配某内容本模式才匹配,他们是0长度断言,不会消耗字符串长度。肯定式向前查看的语法是:(?=查看的内容)否定式向前查看的语法是:(?!查看内容)肯定式向后查看的语法是:(?=查看内容)否定式向后查看的语法是:(?!查看内容)JS中不支持向后查看语法,报错。,Javascript正则表达式,Javascript使用类RegExp构建正则表达式。varregexp=newRegExp(“abc”,”ig”);第一个参数是正则表达式串,第二个是匹配模式控制串,这里是忽略大小写,全局搜索。或者使用正则表达式字面表达方式Varregexp=/abc/ig;String类的多个方法可以直接使用正则表达式工作search(/abc/):找第一个匹配数下标。replace(/abc/,handler):找到匹配并执行回调。match(/abc/):查找匹配结果,以数组对象返回。split(/abc/,n);按匹配分裂n次。,Javascript正则表达式,RegExp的方法和属性test(s);测试s是否匹配模式。exec(s);得到匹配结果数组对象,含有index(匹配起始位)和input(原始输入串)属性。这个与String的match方法返回的结果一样,但是match方法不会影响正则表达式的lastIndex属性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论