php基础教学课件14.正则表达式

上传人:枫** 文档编号:578492068 上传时间:2024-08-24 格式:PPT 页数:20 大小:985KB
返回 下载 相关 举报
php基础教学课件14.正则表达式_第1页
第1页 / 共20页
php基础教学课件14.正则表达式_第2页
第2页 / 共20页
php基础教学课件14.正则表达式_第3页
第3页 / 共20页
php基础教学课件14.正则表达式_第4页
第4页 / 共20页
php基础教学课件14.正则表达式_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《php基础教学课件14.正则表达式》由会员分享,可在线阅读,更多相关《php基础教学课件14.正则表达式(20页珍藏版)》请在金锄头文库上搜索。

1、PHP正则表达式后盾网 后盾网 人人做后盾整理课件整理课件后盾网 人人做后盾正则表达式是什么?u正则表达式通常被用来检索或替换符合某个模式的文本内容u许多程序设计语言都支持利用正则表达式进行字符串操作。例如:JavaScript、PHP、ASP、JAVA、Perl、C#、.NET、ColdFusion、Python、VisualBasic、MySQL、Linux、VI编辑器等等都支持正则表达式u在PHP中支持Perl兼容的正则表达式函数PCRE模式,同时支持POSIX正则表达式。Perl兼容的正则表达式效率更高,在PHP中POSIX正则表达式扩展被废弃,所以我们只需要学习Perl正则即可简单来

2、说正则表达式就是完成字符串的增、删、改、查整理课件整理课件后盾网 人人做后盾定界符-正则表达式语句需要由分隔符(定界符)闭合包裹,分隔符可以使任意非字母数字,非反斜线,非空白字符-经常使用的分隔符是正斜线/,hash符号#以及取反符号下面的例子都是使用合法分隔符的模式建议使用/做为定界符示例:$preg = /houdunwang/;$c = preg_match($preg, 后盾网址);整理课件整理课件后盾网 人人做后盾元字符(原子)u元字符是正则表达式中的最小元素,只代表单一(一个)字符-系统提供的元字符:d匹配任意一个数字0-9D与除了数字以外的任何一个字符匹配0-9w与任意一个英文字

3、母,数字或下划线匹配a-zA-Z_W除了字母,数字或下划线外与任何一个字符匹配a-zA-Z_s与任意一个空白字符匹配nfrtvf换页字符n换行字符r回车字符t制表符v垂直制表符S与除了空白符外任意一个字符匹配nfrtv整理课件整理课件后盾网 人人做后盾字符转义u假如有这样的场景,我们想通过正则查找*符号,但是*在正则中有特殊的意义,如果写成/*/这会找到任意除换行符外的字符,所以我们要写成/*/,也就是把*号进行转义处理,恢复他本来的意思整理课件整理课件后盾网 人人做后盾元字符表(原子表)u如果想在一组字符中匹配某个元字符,在正则表达式中可以通过元字符表方式来完成,就是放到.方括号中只匹配其中

4、的一个原子只匹配除了其中字符的任意一个原子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描红整理课件整理课件后盾网 人人做后盾元字符组(原子组)-如果一次要匹配多个元子,可以通过元子组完成-原子组与原子

5、表的差别在于原子组一次匹配多个元子,而原子表则是匹配成功表中的一个元字符-原子组代表一个原子集合或者说一个大原子,并压入堆(内存)用于调用,调用时单引号里用1,双引号用1整理课件整理课件后盾网 人人做后盾不保存模式u使用原子组时扩号中的所有内存会被临时缓存到内存的堆栈中,如下示例:$str=我喜欢上的网站有和http:/;$preg=/(http:/)?w+?.w+.(com|)/is;preg_match_all($preg,$str,$arr);var_dump($arr);u上面示例中返回的数组会包括匹配到的原子组如http:/等,有时我们并不希望返回这个原子组,这时可以将上面的正则改写

6、为如下形式:$preg=/(?:http:/)?w+?.w+.(?:com|)/is”;u用?:修饰的原子组表示该原子组不会缓存在内存中,结果集中也不会包括该原子组整理课件整理课件后盾网 人人做后盾选择修释符u选择修释符 |代表在|左右两侧有一个匹配到就可以-示例:$str=与新浪网http:/;$preg=/.(baidu|sina)./is;$new_str=preg_replace($preg,.houdunwang.,$str);整理课件整理课件后盾网 人人做后盾断言匹配u如果想在匹配时设置前面或后面只能是什么字符或者不能是什么字符这样的情况我们可以使用断言匹配处理(?=XXX)/前面

7、是XXX开始的(?!XXX)/前面不是以XXX开始的(?=XXX)/后面是以XXX结束的(?!XXX)/后面不是以XXX结束的整理课件整理课件后盾网 人人做后盾断言匹配示例:$str = 后盾官网后盾论坛http:/;$preg = /(?!http:/)(?:bbs|www).(houdunwang).com/isU;$new_str = preg_replace($preg, http:/, $str);echo $new_str;以上示例给所有不以http开始的的urL加上http整理课件整理课件后盾网 人人做后盾重复匹配u如果要重复匹配一些内容时我们要使用重复匹配修饰符,包括以下几种*

8、重复零次或更多次+重复一次或更多次?重复零次或一次n重复n次n,重复n次或更多次n,m重复n到m次因为正则最小单位是元字符,而我们很少只匹配一个元字符如a、b所以基本上重复匹配在每条正则语句中都是必用到的内容整理课件整理课件后盾网 人人做后盾禁止重复匹配u正则表达式在进行重复匹配时,默认是贪婪匹配模式,也就是说会尽量匹配更多内容,但是有的时候我们并不希望他匹配更多内容,这时可以通过?进行修饰来禁止重复匹配*?重复任意次,但尽可能少重复+?重复1次或更多次,但尽可能少重复?重复0次或1次,但尽可能少重复n,m?重复n到m次,但尽可能少重复n,?重复n次以上,但尽可能少重复整理课件整理课件后盾网

9、人人做后盾匹配字符边界u如果想匹配字符的边界,边界包括空格、标点符号、换行等,可以使用正则表达式的匹配字符边界修饰符如下-匹配字符串边界匹配字符串的开始$匹配字符串的结束,忽略换行符-单词边界限制b匹配单词的边界B匹配除单词边界以外的部分整理课件整理课件后盾网 人人做后盾模式修正符u正则表达式在执行时会按他们的默认执行方式进行,但有时候默认的处理方式总不能满足我们的需求,所以我们可以修正正则处理的默认执行方式:i不区分大小写字母的匹配m将字符串视为多行s将字符串视为单行,换行符当普通字符看待使.匹配任何字符x模式中的空白忽略不计U匹配到最近的字符串e将替换的字符串作为表达使用整理课件整理课件后

10、盾网 人人做后盾常用正则操作函数upreg_match()-语法:intpreg_match(string$pattern,string$subject,array&$matches,int$flags=0,int$offset=0-搜索subject与pattern给定的正则表达式的一个匹配整理课件整理课件后盾网 人人做后盾常用正则操作函数upreg_match_all()-语法:int preg_match_all ( string $pattern , string $subject , array &$matches , int $flags = PREG_PATTERN_ORDER

11、, int $offset = 0 )-搜索subject中所有匹配pattern给定正则表达式的匹配结果并且将它们以flag指定顺序输出到matches中整理课件整理课件后盾网 人人做后盾常用正则操作函数upreg_split()-语法:arraypreg_split(string$pattern,string$subject,int$limit=-1,int$flags=0)-通过一个正则表达式分隔给定字符串整理课件整理课件后盾网 人人做后盾常用正则操作函数upreg_replace()/执行一个正则表达式的搜索和替换-语法:mixedpreg_replace(mixed$pattern,mixed$replacement,mixed$subject,int$limit=-1,int&$count)-搜索subject中匹配pattern的部分,以replacement进行替换整理课件整理课件

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号