欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

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

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

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

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

    php正则表达式,讲师:韩顺平,主讲 韩顺平,php进阶-内容介绍,(一)基础知识(二)perl兼容正则表达式(三)posix扩展正则表达式,主讲 韩顺平,php进阶-期望目标,1.熟练的使用正则表达式,主讲 韩顺平,为什么要学习正则表达式提出问题,给你一个字符串(或一篇文章),请你找出所有四个数字连在一起的子串?,给你一个字符串(或一篇文章),请你找出所有四个数字连在一起的子串,并且这四个数字要满足:第一位与第四位相同,第二位与第三位相同,比如 1221,5775,.,提出几个问题?,主讲 韩顺平,为什么要学习正则表达式提出问题,提出几个问题?,给你一个字符串,请在服务器端验证该字符串是否是一个电子邮件?给你一个字符串,请在服务器端验证该字符串是否是一个身份证?给你一个字符串,请在服务器端验证该字符串是否是一个电话号码?,主讲 韩顺平,为什么要学习正则表达式解决之道,为了解决上述问题(当然类似问题还有很多),php的设计者给我们提供了正则表达式技术,专门用于处理类似问题。,解决之道-正则表达式,主讲 韩顺平,初识正则表达式基本概念,在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。,正则表达式,javascript,java,php,.,我这里要特别强调,正则表达式不是php的专利产品,实际上很多程序设计语言都支持正则表达式进行字符串操作!如右图所示。,基本概念,主讲 韩顺平,初识正则表达式基本概念,php中有两套正则表达式函数库,两者功能相似,就是执行效率上有所区别:一套是由PCRE(Perl Compatible Regular Expression)库提供的,使用pcre_ 为前缀的函数。(2)一套是由POSIX(Portable Operation System Interface)扩展提供的,使用ereg_ 为前缀的函数(3)两套函数库的功能相似,执行效率稍有不同。一般而言,实现相同的功能,使用PCRE库的效率略占优势,基本概念,可以查看文档来具体说明一下。,主讲 韩顺平,初识正则表达式基本概念,一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。很多人因为它们看上去比较古怪而且复杂所以不敢去使用,不过,经过一点点练习之后,就觉得这些复杂的表达式其实写起来还是相当简单的,而且,一旦你弄懂它们,你就能把数小时辛苦而且易错的文本处理工作缩短在几分钟(甚至几秒钟)内完成。,基本概念,主讲 韩顺平,一个正则表达式实例,为让大家对正则表达式有一个直观的概念,我先给大家举一个简单的实例,学习技术思路:先入门-精通,给你一个字符串(或一篇文章),请你找出所有四个数字连在一起的子串?,int preg_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 函数文档,各个函数的详细用法在后面分别举例说明,主讲 韩顺平,POSIX Regex 函数,ereg_replace 正则表达式替换 ereg 正则表达式匹配 eregi_replace 不区分大小写的正则表达式替换 eregi 不区分大小写的正则表达式匹配 split 用正则表达式将字符串分割到数组中 spliti 用正则表达式不区分大小写将字符串分割到数组中 sql_regcase 产生用于不区分大小的匹配的正则表达式,posix 和 pcre 函数对照表,在php 5.3.0,POSIX 正则表达式扩展被废弃,在使用posix正则表达式函数时总会得到E_DEPRECATED notice 因此,我们重点讲解pcre 正则表达式技术,主讲 韩顺平,正则表达式的语法规则,正则表达式主要包含三个部分:原子(普通字符,比如英文字符、数字、_等)元字符(有特殊功能的字符)模式修正字符,一个正则表达式至少包含一个原子,主讲 韩顺平,正则表达式的语法-子模式、捕获、反向引用,如果你认为正则表达式只能检索固定的字符串或是连续的几个数字,那您就太小看正则表达式了,请看下面一个问题:,给你一个字符串(或一篇文章),请你找出所有四个数字连在一起的子串,并且这四个数字要满足第一位与第四位相同第二位与第三位相同,比如 1221,5775,.,请你在服务器端验证字符串是否是一个电子邮件?请你在服务器端验证字符串是否是一个身份证?请你在服务器端验证字符串是否是一个电话号码?,子模式、捕获、反向引用,主讲 韩顺平,正则表达式的语法-子模式、捕获、反向引用,子模式、捕获、反向引用,要解决前面的问题,我们需要了解正则表达式的几个概念:子模式我们可以用圆括号组成一个比较复杂的匹配模式,那么一个圆括号的部分我们可以看作是一个子模式。捕获多个子模式所匹配到的内容按顺序出现在内存的缓冲区中,这个我们称为捕获反向引用圆括号的内容被捕获后,可以在这个括号后被使用,从而写出一个比较实用的匹配模式,这个我们称为反向引用,主讲 韩顺平,正则表达式的语法-子模式、捕获、反向引用,看几个小案例 要匹配两个连续的数字:/(d)1/要匹配五个连续的数字:/(d)14/要匹配个位与千位相同,十位与百位相同的数 5225,1551,可以这样写:/(d)(d)21/,案例 reg.php,请思考下面的问题:请在字符串中检索商品编号,形式如:12321-333999111 这样的号码,要求满足前面是一个五位数,然后一个-号,然后是一个九位数,连续的每三位要相同,子表达式、捕获、反向引用,主讲 韩顺平,正则表达式的语法-原子(Atom),原子是组成正则表达式的基本单位,在分析正则表达式时,应作为一个整体。原子字符是由所有末显式指定为元字符的打印和非打印字符组成。这包括所有的英文字母、数字、标点符号以及其他一些符号。原子也包括以下内容。单个字符、数字,如az,AZ,09.模式单元,如(ABC).可以理解为由多个原子组成的大的原子。原子表,如ABC.普通转义字符。转义元字符。,主讲 韩顺平,正则表达式的语法-原子(Atom),原子说明-d匹配一个数字;等价于0-9D匹配除数字以外任何一个字符;等价于0-9w匹配一个英文字母、数字或下划线;等价于0-9a-zA-Z_W匹配除英文字母、数字和下划线以外任何一个字符;等价于0-9a-zA-Z_s匹配一个空白字符;等价于fnrtvS匹配除空白字符以外任何一个字符;等价于fnrtvf匹配一个换页符等价于 x0c 或 cLn匹配一个换行符;等价于 x0a 或 cJr匹配一个回车符等价于x0d 或 cMt匹配一个制表符;等价于 x09或clv匹配一个垂直制表符;等价于x0b或ckoNN匹配一个八进制数字xNN匹配一个十六进制数字cC匹配一个控制字符,正则表达式所使用的普通转义字符,主讲 韩顺平,正则表达式的语法-元字符详解,如果要想灵活的运用正则表达式,必须了解其中各种元字符的功能,元字符从功能上大致分为:,限定符选择匹配符分组组合和反向引用符特殊字符?字符匹配符?定位符,元字符,主讲 韩顺平,正则表达式的语法-元字符详解,用于指定其前面的字符和组合项连续出现多少次,n说明:n表示出现的次数,比如 a3,14,(d)2但是这里要注意一点,13 去匹配 1111111的话,会得到什么结果呢?111 111,案例 reg07.php,元字符-限定符,主讲 韩顺平,正则表达式的语法-元字符详解,n,m说明:n表示至少出现的n次最多m次,比如 a3,4,14,5,(d)2,5我们看看 13,4 去匹配 1111111的话,会得到什么结果呢?1111 111 正则表达式在默认匹配中使用的是贪婪匹配的原则,即尽可能匹配多的字符串,这点在上面的案例中体现的很清楚,案例 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-z2/我们看看/A-Z/去匹配 a11c8 会得到什么结果?,案例 reg08.php,元字符-字符匹配符,主讲 韩顺平,正则表达式的语法-元字符详解,A-Z 表示可以匹配A-Z中任意一个字符。0-9 表示可以匹配0-9中任意一个字符。这个就不举例说明了.,元字符-字符匹配符,主讲 韩顺平,正则表达式的语法-元字符详解,a-z 说明:a-z 表示可以匹配不是a-z中的任意一个字符,比如/a-z/,/a-z2/我们看看/a-z/去匹配 a11c8 会得到什么结果?用/a-z2/又会得到什么结果呢?,案例 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-9w 匹配任意英文字符、数字和下划线,相当于a-zA-Z0-9_W 相当于 a-zA-Z0-9_ 是w 刚好相反.s 匹配任何空白字符(空格,制表符等)S 匹配任何非空白字符,和s刚好相反.匹配出 n 之外的所有字符,如果要匹配.本身则需要使用.,思考题:请编写一个正则表达式,可以匹配任意三个连续的字符,案例 reg08.php,/(dD)12/,元字符-字符匹配符(即atom原子),主讲 韩顺平,正则表达式的语法-元字符详解,元字符-特殊字符匹配,主讲 韩顺平,正则表达式的语法-元字符详解,定位符用于 规定要匹配的字符串出现的位置,比如在字符串的开始还是在结束的位置,这个也是相当有用的,必须掌握。,符号 说明:匹配目标字符串的开始位置。比如/han/去匹配“hanshunping han han”,我们看看会得到什么结果?$符号 说明:匹配目标字符串的结束位置。比如/han$/去匹配“hanshunping han hanuu”,我们看看会得到什么结果?,案例 reg10.php,元字符-定位符,主讲 韩顺平,正则表达式的语法-元字符详解,b 符号 说明:匹配目标字符串的边界。这个字符串的边界,有点不好理解,我给大家举一个实例说明,比如/hanb/去匹配“hanshunping sphan nnhan”,我们会匹配到“hanshunping sphan nnhan”,所以这里说的字符串的边界指的是子串间有空格,或者是目标字符串的结束位置,特别注意没有目标字符串的开始位置B 符号 说明:匹配目标字符串的非边界。这个和b的含义刚刚相反,不再赘述,请看一个案例比如/hanB/去匹配“hanshunping sphan nnhan”,我们会匹配到“hanshunping sphan nnhan”,案例 reg10.php,元字符-定位符,主讲 韩顺平,正则表达式的语法-元字符详解,符号 说明:在我们使用正则表达式去检索某些特殊字符的时候,需要用到转义符号,否则检索不到结果,甚至会报错的。案例:用/$/去匹配“abc$(”会怎样?用/(/去匹配“abc$(”会怎样?,案例 reg11.php,元字符-转义符号,主讲 韩顺平,正则表达式的语法-元字符详解,需要用到转义符号的字符有以下:.*+()$/?,案例 reg11.php,元字符-转义符号,主讲 韩顺平,正则表达式的语法-元字符详解,有时候,我们在匹配某个字符串的时候是选择性的,即:既可以匹配这个,又可以匹配那个,这时你需要用到 选择匹配符号|,案例 reg12.php,选择匹配符号还是比较好理解的,我们通过一个案例说明:用(han|韩|含)去匹配“hanshunping 韩顺平”,会得到什么结果?,元字符-选择匹配符,主讲 韩顺平,正则表达式的语法-模式修正符(pattern modifiers),模式修正符扩展了正则表达式在字符匹配、替换操作时的某些功能。这些扩展或者说修正增强了正则表达式的处理能力。模式修正符一般标记于整个模式之外,并且可以组合使用,如“/apple/i”、“/cat|dog/uis”等。表列出了一些常用的模式修正符极其功能说明。模式修正符说明i可同时匹配大小写字母M将字符串视为多行s将字符串视为单行,换行符做为普通字符看待x模式中的空白忽略不计S当一个模式将被使用若干次时,为加速匹配起见值得先对其进行分析U匹配到最近的字符串e将替换的字符串作为表达使用,主讲 韩顺平,正则表达式的语法-模式修正符(pattern modifiers),下面是几个简单的示例,可以说明模式修正符的使用/apple/i匹配“apple”或“Apple”等,忽略大小写。/I love you/ix匹配“iloveYou”,忽略大小写以及空白。/U将依次匹配字符串“Cool musicFew years ago.”中的“”、“”和“”。而/却匹配到最后一个可用的字符串,既“Coolmusic”。/Uis将HTML文件视为单行字符串,忽略大小写和换行符。匹配其中中的所有以“h”开头的标签,如“”、“”等。,主讲 韩顺平,实际运用案例,陆游,陆游曾说:纸上得来总觉浅,绝知此事要躬行。前面我要已经掌握正则表达式的详细语法,现在我们来实际运用一下。,案例 reg13.php,验证电子邮件格式是否合法(我的规定):只能有一个前面是用户名,可以是a-z A-Z 0-9 _-字符3.后面是域名,可以是类似 或者 并且域名只能是英文字母,主讲 韩顺平,课后练习题,验证获取的字串是不是一个整数:1.要求可以验证是不是整数,对一个url进行解析:http:/: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,

    注意事项

    本文(传智播客php培训(正则表达式).ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开