PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
本文实例讲述了PHP正则表达式基本用法。分享给大家供大家参考,具体如下:
Demo1.php
<?php //尝试着写第一个正则表达式 //第一个参数,表示模式(就是和字符串去比较,匹配) //第二个参数,表示字符串 //如果整个函数模式和字符串比较后匹配了,那么返回真(true)1,否则返回假(false)0 //什么叫匹配,就是一个一个的比较过去 //按照什么规则??按照模式来匹配 //只要模式全部通过,那么就通过 //匹配和相等是两个概念 //因为目前的模式是一个整体,php //所以,字符串只要有连在一起的php三个字符,不管怎样的字符串都能匹配 $mode='/php/';//规则模式 $string='fsdfsdfsdphpfsdfs';//字符串 //echopreg_match($mode,$string); if(preg_match($mode,$string)){ echo'匹配'; }else{ echo'不匹配'; } //echopreg_match('/php/','php'); //if('a'=='a'){ //echo'相等'; //}else{ //echo'不相等'; //} ?>
Demo2.php
<?php //什么叫前导,前面的一个字符 //+号的前导字符就是h //h+的意思是,至少包含一个h //+号的意思 //$mode='/ph+p/';//规则模式 //h*的意思是,零个或者多个h //*号虽然可以是零个,但是前导字符不能更改,更改了,就不匹配了 //$mode='/ph*p/';//规则模式 //h?的意思是,零个或者一个h //?多个前导字符不行 //$mode='/ph?p/';//规则模式 //.的意思是,任意一个字符,所以,两个点,就是任意两个字符 //$mode='/p.p/';//规则模式 //.*表示前导任意字符,并且零个或者多个 //$mode='/p.*p/';//规则模式 //h{3}表示,前导必须是3个, //$mode='/ph{3}p/';//规则模式 //h{3,5}表示,前导必须是3到5个 //$mode='/ph{3,5}p/';//规则模式 //h{3,}表示,前导至少3个h //$mode='/ph{3,}p/';//规则模式 //$符号,一般加在模式的字符串尾巴上 //表示从尾巴开始匹配 //$mode='/php$/';//规则模式 //^表示,从开头进行匹配 //$mode='/^php/';//规则模式 //^和$一起用的,基本上不要用正则了,直接用==号即可 //$mode='/^php$/';//规则模式 //|是一个条件选择符,如果有其中一个,即可匹配。 //$mode='/php|asp/';//规则模式 //() $mode='/(this)(is)(php|asp)/';//规则模式 $string='thisisphp';//字符串 //echopreg_match($mode,$string); if(preg_match($mode,$string)){ echo'匹配'; }else{ echo'不匹配'; } ?>
Demo3.php
<?php //元子符 //[]中括号,是一种正则里的语法 //里面的东西表示任意一个即可 //[a-z]表示26个字母中,随便其中一个 //$mode='/[a-z]/';//规则模式 //[0-9]表示0-9,随便其中一个 //$mode='/[0-9]/';//规则模式 //[asv]其中一个 //$mode='/[asv]/';//规则模式 //[a-zA-Z0-9_]表示其中一个匹配[a-zA-Z0-9_]中的任意一个 //$mode='/[a-zA-Z0-9_]/';//规则模式 //不是在开头匹配行首的^,而是中括号里的^ //[^]表示匹配除了abc外都能匹配的字符串 //$mode='/[^abc]/';//规则模式 //为了让人们使用更加的方便,\w代表[a-zA-Z0-9_] //$mode='/[\w]/';//规则模式 //\W正好和\w相反 //$mode='/[\W]/';//规则模式 //\d和[0-9]一样 //$mode='/\d/';//规则模式 //\D和[^0-9]一样 //$mode='/\D/';//规则模式 //\s匹配任何空白字符 //$mode='/\s/';//规则模式 //\S不包含空白字符 //$mode='/\S/';//规则模式 //\b表示到达了单词的边界,如果没有到达就不匹配,边界可以理解为空格 //$mode='/php\b/';//规则模式 //\B表示没有到达边界 //$mode='/php\B/';//规则模式 //因为+号是正则里的特殊字符 //如果要匹配特殊字符的话,必须加上\ $mode='/p\+p/';//规则模式 $string='p+p';//字符串 if(preg_match($mode,$string)){ echo'匹配'; }else{ echo'不匹配'; } ?>
Demo4.php
<?php //修饰符 //修饰符放在//的外面 //i表示不区分大小写 //$mode='/php/i';//规则模式 //$string='PHP';//字符串 //m表示匹配首尾的时候,如果遇到换行,也应该承认是结尾 //$mode='/php$/m';//规则模式 //$string="thisisaphp\n,isgoods";//字符串 //x表示忽略掉规则模式中的空白字符 //$mode='/php/x';//规则模式 //$string='php';//字符串 //A表示必须从头开始匹配 $mode='/php/A';//规则模式 $string='phpfsdfd';//字符串 if(preg_match($mode,$string)){ echo'匹配'; }else{ echo'不匹配'; } ?>
Demo5.php
<?php //搜索数组中的相匹配的字符串 //preg_grep()函数 $language=array('php','asp','jsp','python','ruby'); //找出最流行的3p语言 //这三门语言的匹配共同点是什么,最后结尾都是p //结尾匹配p/p$/ //$mode='/p$/'; //打印出开头为p的语言 $mode='/^p/'; //python蟒蛇语言,在国外有取代PHP的传闻 print_r(preg_grep($mode,$language)); ?>
Demo6.php
<?php //搜索模式,最后返回的是真或者是假,1,10 echopreg_match('/php[1-6]/','php5'); ?>
Demo7.php
<?php //电子邮件的小案例 //通过拆分的方法分组 $mode='/^([\w\.]{2,255})@([\w\-]{1,255}).([a-z]{2,4})$/';//模式不能缺少 $string='oneStopWeb@163.com'; if(preg_match($mode,$string)){ echo'电子邮件合法'; }else{ echo'电子邮件不合法'; } ?>
Demo8.php
<?php //匹配全局正则 //将字符串的所有匹配得到的结果放到一个数组变量里 preg_match_all('/php[1-5]/','php5fsdfsdphp6fsdfsdfphp4',$out); print_r($out);//Array([0]=>Array([0]=>php5[1]=>php4)) echo$out[0][0];//php5 ?>
Demo9.php
<?php //定界定则 echopreg_quote('PHPis$150');//PHPis\$150 ?>
Demo10.php
<?php //搜索匹配的结果,然后替换掉 //第一个参数,存的是正则模式 //第二参数,放的是替换掉的字符串 //第二个参数,字符 //将第三个参数的字符串的php5,php6替换成了oneStopWeb echopreg_replace('/php[1-6]/','oneStopWeb','Thisisaphp5,Thisisaphp6'); //ThisisaoneStopWeb,ThisisaoneStopWeb ?>
Demo11.php
<?php //贪婪和分组获取的案例,ubb //我要将这个[b][/b]换成<strong></strong> //注意一个问题,这个时候的[]中括号,是字符串的括号,而不是语法[a-z] //.表示匹配任意字符一个,加上一个*号表示匹配零个或者多个 //用括号分为三组,那么第一组就是\1,第二组就是\2,第三组就是\3 //目前只有1组,\1 //第一问题,第一个[b]和最后一个[/b]匹配了 //解决贪婪匹配。 $mode='/(\[b\])(.*)(\[\/b\])/U';//U禁止贪婪 $replace='<strong>\2</strong>'; $string='Thisisa[b]php5[/b],Thisisa[b]php6[/b]'; //echo$string; echopreg_replace($mode,$replace,$string); ?>
Demo12.php
<?php //用正则表达来进行分割 //如果没有[]符号,就表示,要同时满足 print_r(preg_split('/[.@]/','oneStopWeb@163.com')); //Array([0]=>oneStopWeb[1]=>163[2]=>com) ?>
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php正则表达式用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。