JAVA串讲--字符串与正则表达式.ppt_第1页
JAVA串讲--字符串与正则表达式.ppt_第2页
JAVA串讲--字符串与正则表达式.ppt_第3页
JAVA串讲--字符串与正则表达式.ppt_第4页
JAVA串讲--字符串与正则表达式.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

String与正则表达式 课程目标 掌握三种类型的字符串 String StringBuffer StringBuilder异同掌握正则表达式了解StringTokenizer 三种类型的字符串 1 String 内容不可变的字符串 任何对字符串的修改操作都会导致系统为该次修改创建一个新的字符串 判断下面的输出结果 Stringstr 123 System out println str trim str 2 StringBuffer 内容可变的同步的字符串 同步即线程安全 3 StringBuilder 内容可变的字符串 与StringBuffer的api兼容 但没有做同步 JDK5 0的新类 多数情况下效率高于StringBuffer 一 什么是正则表达式 正则表达式是由普通字符 如英文字母 以及特殊字符 也称为元字符 组成的文字模式 该模式对文本查找时需要匹配的一个或多个字符串描述 给出一个匹配模板 二 为什么要使用正则表达式 正则表达式可以大大简化文本识别工作 现已超出了某种语言或某个系统的局限 成为被人们广为使用的工具 正则表达式 1 元字符 匹配任何单个字符 如 b g 匹配 big bug 等 匹配行结束 或输入结束 如 JAVA 匹配 IlikeJAVA 不匹配 IlikeJAVAS 匹配行开始 或输入开始 如 Spring 匹配 Springgood 不匹配 IhavemasteredSpring 量词 匹配0个或多个它之前的字符或组 如 zo 匹配 zooo zo 量词 匹配0个或1个它之前的字符或组 量词 匹配1个或多它之前的字符或组 n 量词 匹配n个它之前的字符或组 n 量词 匹配至少n个它之前的字符或组 n m 量词 匹配至少n个 最多m个它之前的字符或组 正则表达式基础 正则表达式基础 匹配括号中任意一个字符如 b aui g匹配big bug bag 0 9 匹配0 9之间的任意数字 a zA Z 匹配任意大小写字字母另外 用于 中其含义发生改变表示 排除 如 a z 表示匹配除小写字符之外的任意字符 括号包围的部分定义为 组 group 匹配时 所有组在输会被保存到临时区域 可供以后提取 注 java中匹配器Matcher中记录每个组的索引信息 开始和结束索引相邻存放 到一个数组中 或运算 可将正则表达中的多个匹配模式用它求或 如 a foo可匹配a或food 2 java util regex中定义的常用正则表达的简写 注 由于java中 代表转义 为避免冲突 java中实际编写的正则表达中 都用 代替 t 制表符 等同于 u0009 n 换行符 等同于 u000A d 代表数字 等同于 0 9 D 代表非数字 等同于 0 9 s 代表空白字符 如 换行符 制表符 S 代表非空白字符 w 代表字母字符 等同于 a zA Z 0 9 W 代表非字母字符 等同于 w 正则表达式基础 正则表达式基础 3 边界匹配器 行的开头 行的结尾 b 单词边界 B 非单词边界 A 输入的开头 G 上一个匹配的结尾 Z 输入的结尾 仅用于最后的结束符 如果有的话 z 输入的结尾 1 匹配文件路径中的文件名 c aa aa txt 2 匹配以下格式的日期 June26 1951 a zA Z s 0 9 1 2 s 0 9 4 或 a zA Z s d 1 2 s d 4 3 匹配电话号码 010 955555010955555或95555都正确 或0735 4322122 d 3 4 0 9 正则表达式示例 1 正则表达式的相关组件 1 1 Pattern 模式 正则表达式编译后会生成该类的实例 由该类的实例得到Matcher 匹配器 的实例 Patternp Ppile regex 调用静态方法compile Stringregex 编译做为参数传递给它的正则表达式生成Pattern实例 1 2 Matcher 匹配器 用正则表达式实现在文本中匹配符合模式描述的字符串 Patttern实例调用matcher Stringstr 得到Matcher实例 1 3 标准流程 Patternp Ppile a b Matcherm p matcher aaaaab booleanb m matches Java中应用正则表达式 2 Matcher的常用方法 2 1 三种不同的匹配操作 matches 方法尝试将整个输入序列与该模式匹配 lookingAt 尝试将输入序列从头开始与该模式匹配 find 方法扫描输入序列以查找与该模式匹配的下一个子序列 eg 观察以下代码运行结果 Java中应用正则表达式 Stringexpression d 3 Patternp Ppile expression Matcherm p matcher 222 2System out println matches m matches System out println lookingAt m lookingAt System out println find m find 若将 2的代码替换以下情况输出又为怎样 Matcherm p matcher 222222 或Matcherm p matcher 222222 Java中应用正则表达式 2 2 group start end a 分组 group组是用括号划分的正则表达式 可以根据组的编号来引用某个组 组号为0表示整个表达式 组号1表示第一对括号括起来的组 依次类型 由左往右或由外向内依次编号 如 A B C D则ABCD是0组 组1是BC 组2是Cgroup 返回前一次匹配操作的第0组group 返回前一次匹配操作的第i组groupCount 返回正则表达式中分组的数目 不包括0组 观察下面代码的输出 Stringexpression A B C D Patternp Ppile expression Matcherm p matcher ABCD System out println matches m matches System out println groupCount m groupCount System out println group m group System out println group 1 m group 1 System out println group 2 m group 2 示例 提取文件路径中的文件名 b start end start 匹配操作成功后 返回先前匹配起始位置的索引 end 匹配操作成功后 返回先前匹配的最后一个字符的索引加1eg Stringinput IamaJavaProgrammer IverylikeJavalanguage andIhavaagoodbookaboutJavacalledThinking in Java Patternp Ppile bJava Matcherm p matcher input while m find System out println start m start end m end Java中应用正则表达式 Java中应用正则表达式 2 3 替换操作 replaceFirst Stringreplacement 用参数replacement替换匹配的第一个子串 replaceAll Stringreplacement 用参数replacement替换所有匹配的子串 appendRelacement StringBuffersbuf Stringreplacement eg Stringinput IamaJavaProgrammer IverylikeJavalanguage andIhavaagoodbookaboutJavacalledThinking in Java Patternp Ppile 1 Matcherm p matcher input System out

温馨提示

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

评论

0/150

提交评论