传智播客php培训(正则表达式).ppt

上传人:xt****7 文档编号:5182208 上传时间:2020-01-22 格式:PPT 页数:43 大小:564.05KB
返回 下载 相关 举报
传智播客php培训(正则表达式).ppt_第1页
第1页 / 共43页
传智播客php培训(正则表达式).ppt_第2页
第2页 / 共43页
传智播客php培训(正则表达式).ppt_第3页
第3页 / 共43页
点击查看更多>>
资源描述
php正则表达式 讲师 韩顺平hanshunping 主讲韩顺平 php进阶 内容介绍 一 基础知识 二 perl兼容正则表达式 三 posix扩展正则表达式 主讲韩顺平 php进阶 期望目标 1 熟练的使用正则表达式 主讲韩顺平 为什么要学习正则表达式 提出问题 给你一个字符串 或一篇文章 请你找出所有四个数字连在一起的子串 给你一个字符串 或一篇文章 请你找出所有四个数字连在一起的子串 并且这四个数字要满足 第一位与第四位相同 第二位与第三位相同 比如1221 5775 提出几个问题 主讲韩顺平 为什么要学习正则表达式 提出问题 提出几个问题 给你一个字符串 请在服务器端验证该字符串是否是一个电子邮件 给你一个字符串 请在服务器端验证该字符串是否是一个身份证 给你一个字符串 请在服务器端验证该字符串是否是一个电话号码 主讲韩顺平 为什么要学习正则表达式 解决之道 为了解决上述问题 当然类似问题还有很多 php的设计者给我们提供了正则表达式技术 专门用于处理类似问题 解决之道 正则表达式 主讲韩顺平 初识正则表达式 基本概念 在计算机科学中 是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串 在很多文本编辑器或其他工具里 正则表达式通常被用来检索或替换那些符合某个模式的文本内容 许多程序设计语言都支持利用正则表达式进行字符串操作 正则表达式 javascript java php 我这里要特别强调 正则表达式不是php的专利产品 实际上很多程序设计语言都支持正则表达式进行字符串操作 如右图所示 基本概念 主讲韩顺平 初识正则表达式 基本概念 php中有两套正则表达式函数库 两者功能相似 就是执行效率上有所区别 一套是由PCRE PerlCompatibleRegularExpression 库提供的 使用pcre 为前缀的函数 2 一套是由POSIX PortableOperationSystemInterface 扩展提供的 使用ereg 为前缀的函数 3 两套函数库的功能相似 执行效率稍有不同 一般而言 实现相同的功能 使用PCRE库的效率略占优势 基本概念 可以查看文档来具体说明一下 主讲韩顺平 初识正则表达式 基本概念 一个正则表达式 就是用某种模式去匹配一类字符串的一个公式 很多人因为它们看上去比较古怪而且复杂所以不敢去使用 不过 经过一点点练习之后 就觉得这些复杂的表达式其实写起来还是相当简单的 而且 一旦你弄懂它们 你就能把数小时辛苦而且易错的文本处理工作缩短在几分钟 甚至几秒钟 内完成 基本概念 主讲韩顺平 一个正则表达式实例 为让大家对正则表达式有一个直观的概念 我先给大家举一个简单的实例 学习技术思路 先入门 精通 给你一个字符串 或一篇文章 请你找出所有四个数字连在一起的子串 intpreg match all string pattern string subject array matches 一个简单实例 参看文档 看看函数的细节 案例reg01 php 主讲韩顺平 一个正则表达式实例 上机小练习 针对前面的案例 请大家思考1 如何检索五个连续的数字2 请你找出所有四个数字连在一起的子串 并且这四个数字要满足 第一位与第四位相同 第二位与第三位相同 比如1221 5775 3 指定查找某个字串 比如 韩顺平 如果则提示之 案例exercise01 php 主讲韩顺平 正则表达式的作用 php中正则表达式的主要作用包括三个方面 匹配 检索 从给定字串中匹配到符合条件的子串 用新的文本替换匹配的文本 将给定的字串拆分成符合条件的子串 主讲韩顺平 pcre函数 pcre函数preg filter 执行一个正则表达式搜索和替换preg grep 返回匹配模式的数组条目preg last error 返回最后一个PCRE正则执行产生的错误代码preg match all 执行一个全局正则表达式匹配preg match 执行一个正则表达式匹配preg quote 转义正则表达式字符preg replace callback 执行一个正则表达式搜索并且使用一个回调进行替换preg replace 执行一个正则表达式的搜索和替换preg split 通过一个正则表达式分隔字符串 参看pcre函数文档 各个函数的详细用法在后面分别举例说明 主讲韩顺平 POSIXRegex函数 ereg replace 正则表达式替换ereg 正则表达式匹配eregi replace 不区分大小写的正则表达式替换eregi 不区分大小写的正则表达式匹配split 用正则表达式将字符串分割到数组中spliti 用正则表达式不区分大小写将字符串分割到数组中sql regcase 产生用于不区分大小的匹配的正则表达式 posix和pcre函数对照表 在php5 3 0 POSIX正则表达式扩展被废弃 在使用posix正则表达式函数时总会得到E DEPRECATEDnotice因此 我们重点讲解pcre正则表达式技术 主讲韩顺平 正则表达式的语法规则 正则表达式主要包含三个部分 原子 普通字符 比如英文字符 数字 等 元字符 有特殊功能的字符 模式修正字符 一个正则表达式至少包含一个原子 主讲韩顺平 正则表达式的语法 子模式 捕获 反向引用 如果你认为正则表达式只能检索固定的字符串或是连续的几个数字 那您就太小看正则表达式了 请看下面一个问题 给你一个字符串 或一篇文章 请你找出所有四个数字连在一起的子串 并且这四个数字要满足 第一位与第四位相同 第二位与第三位相同 比如1221 5775 请你在服务器端验证字符串是否是一个电子邮件 请你在服务器端验证字符串是否是一个身份证 请你在服务器端验证字符串是否是一个电话号码 子模式 捕获 反向引用 主讲韩顺平 正则表达式的语法 子模式 捕获 反向引用 子模式 捕获 反向引用 要解决前面的问题 我们需要了解正则表达式的几个概念 子模式我们可以用圆括号组成一个比较复杂的匹配模式 那么一个圆括号的部分我们可以看作是一个子模式 捕获多个子模式所匹配到的内容按顺序出现在内存的缓冲区中 这个我们称为捕获 反向引用圆括号的内容被捕获后 可以在这个括号后被使用 从而写出一个比较实用的匹配模式 这个我们称为反向引用 主讲韩顺平 正则表达式的语法 子模式 捕获 反向引用 看几个小案例要匹配两个连续的数字 d 1 要匹配五个连续的数字 d 1 4 要匹配个位与千位相同 十位与百位相同的数5225 1551 可以这样写 d d 2 1 案例reg php 请思考下面的问题 请在字符串中检索商品编号 形式如 12321 333999111这样的号码 要求满足前面是一个五位数 然后一个 号 然后是一个九位数 连续的每三位要相同 子表达式 捕获 反向引用 主讲韩顺平 正则表达式的语法 原子 Atom 原子是组成正则表达式的基本单位 在分析正则表达式时 应作为一个整体 原子字符是由所有末显式指定为元字符的打印和非打印字符组成 这包括所有的英文字母 数字 标点符号以及其他一些符号 原子也包括以下内容 单个字符 数字 如a z A Z 0 9 模式单元 如 ABC 可以理解为由多个原子组成的大的原子 原子表 如 ABC 普通转义字符 转义元字符 主讲韩顺平 正则表达式的语法 原子 Atom 原子说明 d匹配一个数字 等价于 0 9 D匹配除数字以外任何一个字符 等价于 0 9 w匹配一个英文字母 数字或下划线 等价于 0 9a zA Z W匹配除英文字母 数字和下划线以外任何一个字符 等价于 0 9a zA Z s匹配一个空白字符 等价于 f n r t v S匹配除空白字符以外任何一个字符 等价于 f n r t v f匹配一个换页符等价于 x0c或 cL n匹配一个换行符 等价于 x0a或 cJ r匹配一个回车符等价于 x0d或 cM t匹配一个制表符 等价于 x09 或 cl v匹配一个垂直制表符 等价于 x0b或 ck oNN匹配一个八进制数字 xNN匹配一个十六进制数字 cC匹配一个控制字符 正则表达式所使用的普通转义字符 主讲韩顺平 正则表达式的语法 元字符详解 如果要想灵活的运用正则表达式 必须了解其中各种元字符的功能 元字符从功能上大致分为 限定符选择匹配符分组组合和反向引用符特殊字符 字符匹配符 定位符 元字符 主讲韩顺平 正则表达式的语法 元字符详解 用于指定其前面的字符和组合项连续出现多少次 n 说明 n表示出现的次数 比如a 3 1 4 d 2 但是这里要注意一点 1 3 去匹配1111111的话 会得到什么结果呢 111111 案例reg07 php 元字符 限定符 主讲韩顺平 正则表达式的语法 元字符详解 n m 说明 n表示至少出现的n次最多m次 比如a 3 4 1 4 5 d 2 5 我们看看1 3 4 去匹配1111111的话 会得到什么结果呢 1111111正则表达式在默认匹配中使用的是贪婪匹配的原则 即尽可能匹配多的字符串 这点在上面的案例中体现的很清楚 案例reg07 php 元字符 限定符 主讲韩顺平 正则表达式的语法 元字符详解 说明 表示出现1次到任意多次 比如 a 1 d 我们看看 1 去匹配1111111的话 会得到什么结果呢 案例reg07 htm 元字符 限定符 主讲韩顺平 正则表达式的语法 元字符详解 说明 表示出现0次到任意多次 比如 a 1 d 我们看看 a1 去匹配a111的话 会得到什么结果呢 案例reg07 php 元字符 限定符 主讲韩顺平 正则表达式的语法 元字符详解 说明 表示出现0次到1次 比如 a 1 d 我们看看 a1 去匹配a2111的话 会得到什么结果呢 案例reg07 php 元字符 限定符 主讲韩顺平 正则表达式的语法 元字符详解 a z 说明 a z 表示可以匹配a z中任意一个字符 比如 a z a z 2 我们看看 A Z 去匹配a11c8会得到什么结果 案例reg08 php 元字符 字符匹配符 主讲韩顺平 正则表达式的语法 元字符详解 A Z 表示可以匹配A Z中任意一个字符 0 9 表示可以匹配0 9中任意一个字符 这个就不举例说明了 元字符 字符匹配符 主讲韩顺平 正则表达式的语法 元字符详解 a z 说明 a z 表示可以匹配不是a z中的任意一个字符 比如 a z a z 2 我们看看 a z 去匹配a11c8会得到什么结果 用 a z 2 又会得到什么结果呢 案例reg08 php 元字符 字符匹配符 主讲韩顺平 正则表达式的语法 元字符详解 A Z 表示可以匹配不是A Z中的任意一个字符 0 9 表示可以匹配不是0 9中的任意一个字符 这个就不举例说明了 元字符 字符匹配符 主讲韩顺平 正则表达式的语法 元字符详解 abcd 表示可以匹配abcd中的任意一个字符 abcd 表示可以匹配不是abcd中的任意一个字符 当然上面的abcd你可以根据实际情况修改 以适应你的需求 案例reg08 php 元字符 字符匹配符 主讲韩顺平 正则表达式的语法 元字符详解 d表示可以匹配0 9的任意一个数字 相当于 0 9 D表示可以匹配不是0 9中的任意一个数字 相当于 0 9 w匹配任意英文字符 数字和下划线 相当于 a zA Z0 9 W相当于 a zA Z0 9 是 w刚好相反 s匹配任何空白字符 空格 制表符等 S匹配任何非空白字符 和 s刚好相反 匹配出 n之外的所有字符 如果要匹配 本身则需要使用 思考题 请编写一个正则表达式 可以匹配任意三个连续的字符 案例reg08 php d D 1 2 元字符 字符匹配符 即atom原子 主讲韩顺平 正则表达式的语法 元字符详解 元字符 特殊字符匹配 主讲韩顺平 正则表达式的语法 元字符详解 定位符用于规定要匹配的字符串出现的位置 比如在字符串的开始还是在结束的位置 这个也是相当有用的 必须掌握 符号说明 匹配目标字符串的开始位置 比如 han 去匹配 hanshunpinghanhan 我们看看会得到什么结果 符号说明 匹配目标字符串的结束位置 比如 han 去匹配 hanshunpinghanhanuu 我们看看会得到什么结果 案例reg10 php 元字符 定位符 主讲韩顺平 正则表达式的语法 元字符详解 b符号说明 匹配目标字符串的边界 这个字符串的边界 有点不好理解 我给大家举一个实例说明 比如 han b 去匹配 hanshunpingsphannnhan 我们会匹配到 hanshunpingsphannnhan 所以这里说的字符串的边界指的是子串间有空格 或者是目标字符串的结束位置 特别注意没有目标字符串的开始位置 B符号说明 匹配目标字符串的非边界 这个和 b的含义刚刚相反 不再赘述 请看一个案例比如 han B 去匹配 hanshunpingsphannnhan 我们会匹配到 hanshunpingsphannnhan 案例reg10 php 元字符 定位符 主讲韩顺平 正则表达式的语法 元字符详解 符号说明 在我们使用正则表达式去检索某些特殊字符的时候 需要用到转义符号 否则检索不到结果 甚至会报错的 案例 用 去匹配 abc 会怎样 用 去匹配 abc 会怎样 案例reg11 php 元字符 转义符号 主讲韩顺平 正则表达式的语法 元字符详解 需要用到转义符号的字符有以下 案例reg11 php 元字符 转义符号 主讲韩顺平 正则表达式的语法 元字符详解 有时候 我们在匹配某个字符串的时候是选择性的 即 既可以匹配这个 又可以匹配那个 这时你需要用到选择匹配符号 案例reg12 php 选择匹配符号还是比较好理解的 我们通过一个案例说明 用 han 韩 含 去匹配 hanshunping韩顺平 会得到什么结果 元字符 选择匹配符 主讲韩顺平 正则表达式的语法 模式修正符 patternmodifiers 模式修正符扩展了正则表达式在字符匹配 替换操作时的某些功能 这些扩展或者说修正增强了正则表达式的处理能力 模式修正符一般标记于整个模式之外 并且可以组合使用 如 apple i cat dog uis 等 表列出了一些常用的模式修正符极其功能说明 模式修正符说明i可同时匹配大小写字母M将字符串视为多行s将字符串视为单行 换行符做为普通字符看待x模式中的空白忽略不计S当一个模式将被使用若干次时 为加速匹配起见值得先对其进行分析U匹配到最近的字符串e将替换的字符串作为表达使用 主讲韩顺平 正则表达式的语法 模式修正符 patternmodifiers 下面是几个简单的示例 可以说明模式修正符的使用 apple i匹配 apple 或 Apple 等 忽略大小写 Iloveyou ix匹配 iloveYou 忽略大小写以及空白 U将依次匹配字符串 CoolmusicFewyearsago 中的 和 而 却匹配到最后一个可用的字符串 既 Coolmusic Uis将HTML文件视为单行字符串 忽略大小写和换行符 匹配其中中的所有以 h 开头的标签 如 等 主讲韩顺平 实际运用案例 陆游 陆游曾说 纸上得来总觉浅 绝知此事要躬行 前面我要已经掌握正则表达式的详细语法 现在我们来实际运用一下 案例reg13 php 验证电子邮件格式是否合法 我的规定 只能有一个 前面是用户名 可以是a zA Z0 9 字符3 后面是域名 可以是类似或者并且域名只能是英文字母 主讲韩顺平 课后练习题 验证获取的字串是不是一个整数 1 要求可以验证是不是整数 对一个url进行解析 8080 abc index htm要求从一个url中得到协议是什么 http域名是什么端口是什么8080文件名是什么index htm 验证输入的是不是一个电话号码 1 电话号码由数字 和 构成 2 电话号码为8位或者11位 不含区号 3 如果电话号码中包含有区号那么区号为三位或四位 4 区号用 或 和其他部分隔开 5 移动电话号码为11或12位 如果为12位 那么第一位为0 6 11位移动电话号码的第一位和第二位为 13 7 12位移动电话号码的第二位和第三位为 13 验证输入的是不是合法的ip地址 1 形式如 2 每个 是一个数 范围在0 255之间 当然开始的 不能为0
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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