php基础教学课件-14.正则表达式_第1页
php基础教学课件-14.正则表达式_第2页
php基础教学课件-14.正则表达式_第3页
php基础教学课件-14.正则表达式_第4页
php基础教学课件-14.正则表达式_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

PHP正则表达式,后盾网2012-2013v2.0,后盾网人人做后盾,正则表达式是什么?,正则表达式通常被用来检索或替换符合某个模式的文本内容许多程序设计语言都支持利用正则表达式进行字符串操作。例如:JavaScript、PHP、ASP、JAVA、Perl、C#、.NET、ColdFusion、Python、VisualBasic、MySQL、Linux、VI编辑器等等都支持正则表达式在PHP中支持Perl兼容的正则表达式函数PCRE模式,同时支持POSIX正则表达式。Perl兼容的正则表达式效率更高,在PHP5.3.0中POSIX正则表达式扩展被废弃,所以我们只需要学习Perl正则即可简单来说正则表达式就是完成字符串的增、删、改、查,定界符,正则表达式语句需要由分隔符(定界符)闭合包裹,分隔符可以使任意非字母数字,非反斜线,非空白字符经常使用的分隔符是正斜线/,hash符号#以及取反符号下面的例子都是使用合法分隔符的模式建议使用/做为定界符示例:$preg=/houdunwang/;$c=preg_match($preg,后盾网址);,元字符(原子),元字符是正则表达式中的最小元素,只代表单一(一个)字符系统提供的元字符:d匹配任意一个数字0-9D与除了数字以外的任何一个字符匹配0-9w与任意一个英文字母,数字或下划线匹配a-zA-Z_W除了字母,数字或下划线外与任何一个字符匹配a-zA-Z_s与任意一个空白字符匹配nfrtvf换页字符n换行字符r回车字符t制表符v垂直制表符S与除了空白符外任意一个字符匹配nfrtv,字符转义,假如有这样的场景,我们想通过正则查找*符号,但是*在正则中有特殊的意义,如果写成/*/这会找到任意除换行符外的字符,所以我们要写成/*/,也就是把*号进行转义处理,恢复他本来的意思,元字符表(原子表),如果想在一组字符中匹配某个元字符,在正则表达式中可以通过元字符表方式来完成,就是放到.方括号中只匹配其中的一个原子只匹配除了其中字符的任意一个原子0-9匹配0-9任何一个数字a-z匹配小写a-z任何一个字母A-Z匹配大写A-Z任何一个字母.点在正则中表示除换行符外的任意字符,元字符组(原子组),示例:$str=后盾官网后盾论坛我在后盾的网名叫houdun;$preg=/(houdun)wang/is;$newStr=preg_replace($preg,1wang,$str);echo$newStr;以上示例是将houdunwang字符串中的houdun描红,元字符组(原子组),如果一次要匹配多个元子,可以通过元子组完成原子组与原子表的差别在于原子组一次匹配多个元子,而原子表则是匹配成功表中的一个元字符原子组代表一个原子集合或者说一个大原子,并压入堆(内存)用于调用,调用时单引号里用1,双引号用1,不保存模式,使用原子组时扩号中的所有内存会被临时缓存到内存的堆栈中,如下示例:$str=我喜欢上的网站有和;$preg=/(http:/)?w+?.w+.(com|)/is;preg_match_all($preg,$str,$arr);var_dump($arr);上面示例中返回的数组会包括匹配到的原子组如http:/等,有时我们并不希望返回这个原子组,这时可以将上面的正则改写为如下形式:$preg=/(?:http:/)?w+?.w+.(?:com|)/is”;用?:修饰的原子组表示该原子组不会缓存在内存中,结果集中也不会包括该原子组,选择修释符,选择修释符|代表在|左右两侧有一个匹配到就可以示例:$str=与新浪网;$preg=/.(baidu|sina)./is;$new_str=preg_replace($preg,.houdunwang.,$str);,断言匹配,如果想在匹配时设置前面或后面只能是什么字符或者不能是什么字符这样的情况我们可以使用断言匹配处理(?=XXX)/前面是XXX开始的(?!XXX)/前面不是以XXX开始的(?=XXX)/后面是以XXX结束的(?!XXX)/后面不是以XXX结束的,断言匹配,示例:$str=后盾官网后盾论坛;$preg=/(?!http:/)(?:bbs|www).(houdunwang).com/isU;$new_str=preg_replace($preg,http:/,$str);echo$new_str;以上示例给所有不以http开始的的urL加上http,重复匹配,如果要重复匹配一些内容时我们要使用重复匹配修饰符,包括以下几种*重复零次或更多次+重复一次或更多次?重复零次或一次n重复n次n,重复n次或更多次n,m重复n到m次因为正则最小单位是元字符,而我们很少只匹配一个元字符如a、b所以基本上重复匹配在每条正则语句中都是必用到的内容,禁止重复匹配,正则表达式在进行重复匹配时,默认是贪婪匹配模式,也就是说会尽量匹配更多内容,但是有的时候我们并不希望他匹配更多内容,这时可以通过?进行修饰来禁止重复匹配*?重复任意次,但尽可能少重复+?重复1次或更多次,但尽可能少重复?重复0次或1次,但尽可能少重复n,m?重复n到m次,但尽可能少重复n,?重复n次以上,但尽可能少重复,匹配字符边界,如果想匹配字符的边界,边界包括空格、标点符号、换行等,可以使用正则表达式的匹配字符边界修饰符如下匹配字符串边界匹配字符串的开始$匹配字符串的结束,忽略换行符单词边界限制b匹配单词的边界B匹配除单词边界以外的部分,模式修正符,正则表达式在执行时会按他们的默认执行方式进行,但有时候默认的处理方式总不能满足我们的需求,所以我们可以修正正则处理的默认执行方式:i不区分大小写字母的匹配m将字符串视为多行s将字符串视为单行,换行符当普通字符看待使.匹配任何字符x模式中的空白忽略不计U匹配到最近的字符串e将替换的字符串作为表达使用,常用正则操作函数,preg_match()语法:intpreg_match(string$pattern,string$subject,array&$matches,int$flags=0,int$offset=0搜索subject与pattern给定的正则表达式的一个匹配,常用正则操作函数,preg_match_all()语法:intpreg_match_all(string$pattern,string$subject,array&$matches,int$flags=PREG_PATTERN_ORDER,int$offset=0)搜索subject中所有匹配pattern给定正则表达式的匹配结果并且将它们以flag指定顺序输出到matches中,常用正则操作函数,preg_split()语法:arraypreg_split(string$pattern,string$subject,int$limit=-1,int$flags=0)通过一个正则表达式分隔给定字符串,常用正则操作函数,preg_repl

温馨提示

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

评论

0/150

提交评论