欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    正则表达式ppt课件.ppt

    • 资源ID:29993381       资源大小:183.01KB        全文页数:15页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    正则表达式ppt课件.ppt

    5.7 5.7 正则表达式正则表达式5.7.1 基础知识基础知识1正则表达式简介正则表达式简介(1)验证验证。检验输入字符串是否符合某个给定的模式。例如,校验一个电话号码是否遵循格式“(000)0000-0000”(此处的0表示一个数字)。(2)解析解析。分析输入字符串以分解出它所包含的要素。例如,用模式“(*):(*)”分解出在HTTP头中普遍应用的“Key:Value”格式的头信息。(3)文本处理文本处理。应用程序常常需要有文本处理功能,比如单词的查找替换、电子邮件的格式化或XML文档的集成等,这些操作通常会涉及模式匹配的问题,要借助正则表达式。5.7.1 5.7.1 基础知识基础知识2特殊字符特殊字符在正则表达式中,一些字符具有特殊含义,参见表5.5。特 殊 字 符含 义abca、b和c的任意一个字符abc除了a、b和c之外的任意字符(否定)a-zA-Z从a到z或从A到Z的任意字符(范围)abchij任意a、b、c、h、i和j字符(并集)a-z&hij任意h、i或j(交集)s空白符(空格、tab、换行或回车)S非空白符(s)d数字0-9D非数字0-9w单词字符(数字0-9、26个英文字母和下画线_).除换行符n之外的任何一个字符(要匹配“.”字符本身,请使用“.”)反斜线字符uhhhh十六进制表示的unicode值为hhhh的字符5.7.1 5.7.1 基础知识基础知识以下对表5.5中的每一个特殊字符列举一个示例,如下:System.out.println(b.matches(abc);/ 打印trueSystem.out.println(b.matches(abc);/ 打印falseSystem.out.println(A.matches(a-zA-Z);/ 打印trueSystem.out.println(A.matches(a-zA-Z);/ 打印trueSystem.out.println(R.matches(A-Z&RFG);/ 打印trueSystem.out.println(nt.matches(s2);/ 打印trueSystem.out.println( .matches(S);/ 打印falseSystem.out.println(3.matches(d);/ 打印trueSystem.out.println(&.matches(D);/ 打印trueSystem.out.println(a_8.matches(w3);/ 打印trueSystem.out.println(n.matches(.);/ 打印falseSystem.out.println(u0041.matches(A);/ 打印true5.7.1 5.7.1 基础知识基础知识3量词量词量词决定表达式将被匹配的次数,以简化表达式的编写,表5.6列出了一些量词所表示字符的出现次数。量 词描 述X*0个或多个X(最大匹配)X+1个或多个X(最大匹配)X?0个或1个X(最大匹配)Xn恰好n个XXn,至少n个XXn,m至少n个X,不多于m个XX*?0个或多个X(最小匹配)X+?1个或多个X(最小匹配)X?0个或1个X(最小匹配)XYX后跟YX|YX或Y(X)定义捕获组n与第n个捕获组相匹配的字串5.7.1 5.7.1 基础知识基础知识以下就表5.6中的几个典型量词列举一些示例,如下:System.out.println(aaaa.matches(a*);/ 打印trueSystem.out.println(aaaa.matches(a+);/ 打印trueSystem.out.println(aaaa.matches(a?);/ 打印falseSystem.out.println(.matches(a?);/ 打印trueSystem.out.println(aaaa.matches(a4);/ 打印trueSystem.out.println(abcabcabc.matches(abc)2,);/ 打印trueSystem.out.println(4563456257.matches(d3,10);/ 打印true5.7.1 5.7.1 基础知识基础知识4常用表达式设计下面的位置匹配,用于匹配串中的位置。(1)(?=X):与这样的位置相匹配,其右部能匹配X。(2)(?!X):与这样的位置相匹配,其右部不能匹配X。(3)(?=X):与这样的位置相匹配,其左部能匹配X。(4)(?!X):与这样的位置相匹配,其左部不能匹配X。5.7.1 5.7.1 基础知识基础知识运用以上正则式规则,可设计如下常用的正则表达式。(1)数字串数字串:d+,在Java中表示为“d+”。(2)英文单词英文单词:a-z A-Z+,在Java中表示为“a-z A-Z+”。(3)一个汉字一个汉字:u4e00- u9fa5,在Java中表示为“u4e00-u9fa5”。(4)汉字串汉字串:u4e00- u9fa5+,在Java中表示为“u4e00-u9fa5+”。(5)IP地址地址:(d1,3.)3d1,3,在Java中表示为“(d1,3.)3d1,3”。(6)重复字符压缩重复字符压缩:将字符串中连续重复的字符压缩成一个。 例如,“aaabbbcccddd11122+*33”压缩成“abcd12+*.3”。相关代码是:设String s = “”;;则String rs = s.replaceAll(“(.)(1)*”, “$1”);。(7)特定子串提取特定子串提取:例如,String s = %.%CXLL=add1,31,123.12%CXLL=add2,32,124% CXLL=,33,125.12%LL=-121.11;从中提取出%CXLL=add1,31,123,123.12,%CXLL=add2,32,124.12,%CXLL=,33,125.12。提取的正则式设计成“%CXLL=.*?(?=%)”,Java中表示为“%CXLL=.*?(?=%)”。(8)串格式串格式:不能以bug打头但可以由字母、数字组成的812个数的字符串。正则式为“(?!bug)a-zA-Z0-98-12”。5.7.1 5.7.1 基础知识基础知识(2)Matcher类类Matcher类的实例用于根据给定的模式,对字符串进行匹配。使用CharSequence接口把输入的字符串提供给匹配器,以便支持来自不同输入源的字符串的匹配。当创建了匹配器之后,就可以用它来执行以下3类不同的匹配操作: matches()方法试图根据此模式,对整个输入序列进行匹配。 lookingAt()方法试图根据此模式,从开始处对输入序列进行匹配。 find()方法将扫描输入序列,寻找下一个与此模式匹配的地方。5.7.2 5.7.2 正则表达式的应用正则表达式的应用1字符串匹配字符串匹配【例5.12】使用正则表达式匹配输入的字符串。打开“Run Configurations”窗口,配置程序运行时的输入参数,在“Arguments”标签页的“Program arguments”栏输入“abcabcabcdefabc abc+ (abc)+ (abc)2,”,然后单击“Run”按钮运行程序,结果为:Input: abcabcabcdefabcRegular expression: abcabcabcdefabcMatch abcabcabcdefabc at positions 0-14Regular expression: abc+Match abc at positions 0-2Match abc at positions 3-5Match abc at positions 6-8Match abc at positions 12-14Regular expression: (abc)+Match abcabcabc at positions 0-8Match abc at positions 12-14Regular expression: (abc)2,Match abcabcabc at positions 0-8例5.12 TestRegex.javaimport java.util.regex.*;public class TestRegex public static void main(String args) if (args.length 2) System.out.println(Usage:njava TestRegex + characterSequence regularExpression+);System.exit(0);System.out.println(Input: + args0 + );for (String arg : args) System.out.println(Regular expression: + arg + );Pattern p = Ppile(arg);Matcher m = p.matcher(args0);while (m.find() System.out.println(Match + m.group() + at positions + m.start() + - + (m.end() - 1);5.7.2 5.7.2 正则表达式的应用正则表达式的应用2字符串分析字符串分析【例5.13】用正则表达式对一个由数字和非数字组成的字符串进行分析,要求:将其中每段连续的数字字符转换成一个整数,若连续的数字字符个数超过4个,则以4个数字为一组进行转换,转换生成的整数依次存入整型数组中。例如,对“c789yz45!786*+56abc123456789”分析后得到的数组内容为:789、45、786、56、1234、5678、9。程序运行结果:7894578656123456789例5.13 GetNumber.javaimport java.util.regex.*;public class GetNumber public static void main(String args) int arr = new int10;/ 创建1个整型数组Pattern p = Ppile(d1,4);/ 编译正则表达式,要求1个到4个数字String s = c789yz45!786*+56abc123456789;Matcher m = p.matcher(s);/ 对字符串进行匹配int i =0;while(m.find() / 寻找与指定模式匹配的下一个子序列int j = 0;j = Integer.parseInt(m.group();/ 将字符串类型转换为整型arri= j;i+;for(int c = 0;ci;c+) System.out.println(arrc);/ 打印数组的内容5.7.2 5.7.2 正则表达式的应用正则表达式的应用3文本替换文本替换正则表达式最擅长于替换文本,有多种方法实现,如下。replaceFirst(String replacement):以repacement替换掉第一个匹配成功的部分。replaceAll(String replacement):以repacement替换掉所有匹配成功的部分。appendReplacement(StringBuffer buf, String replacement):执行渐进式替换,允许再调用其他方法来生成或处理repacement,能够以编程的方式将目标分隔成组,从而实现更为强大的替换功能。appendTail(StringBuffer buf):在执行了一次或多次appendReplacement()之后,调用此方法可以将输入字符串余下的部分复制到buf中。【例5.14】将字符串奇数序列的“java”替换为小写,偶数序列的“java”替换成大写。程序运行结果:java JAVA java JAVA I love java you dislike JAVA例5.14 TestReplaceimport java.util.regex.*;public class TestReplace public static void main(String args) Pattern p = Ppile(java, Pattern.CASE_INSENSITIVE); / 不区分大小写Matcher m = p.matcher(Java java JAva JAVA I love JAVA you dislike Java );StringBuffer buf = new StringBuffer();int i=0;while(m.find() i+;if(i%2 = 0) m.appendReplacement(buf, JAVA); / 偶数序列的转换成大写 else m.appendReplacement(buf, java); / 奇数序列的转换成小写m.appendTail(buf);System.out.println(buf);5.7.2 5.7.2 正则表达式的应用正则表达式的应用4Scanner定界符定界符在默认情况下,Scanner根据空白字符对输入进行分词,也可以用正则表达式指定自己所需的定界符。【例5.15】使用“.”作为IP地址的定界符。TestScanner.javaimport java.util.*;public class TestScanner public static void main(String args)Scanner scanner = new Scanner(192.168.1.99);scanner.useDelimiter(s*.s*);/ 使用.作为定界符while(scanner.hasNextInt()System.out.println(scanner.nextInt();程序运行结果:192168199

    注意事项

    本文(正则表达式ppt课件.ppt)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开