PHP中正则表达式学习及应用(二)
正则表达式中的“元字符”
* 匹配前一个内容的0次1次或多次
例如:
<?php $mode="/go*gle/"; //前一个内容指的是 * 的前一个字符 o ,在$str中出现的次数最少0次。也就是说,可以出现,也可以不出现。 $str="google"; $flag=preg_match($mode, $str, $arr); //print_r($arr); if($flag){ echo "匹配成功".$arr[0]; }else{ echo "匹配失败"; } ?> 输出: 匹配成功google
. 匹配内容的0次1次或多次,但不包含回车换行
例如:
<?php $mode="/go.gle/"; //与 * 的用法类似,就是将 \n 排除在外 $str="google"; $flag=preg_match($mode, $str, $arr); //print_r($arr); if($flag){ echo "匹配成功".$arr[0]; }else{ echo "匹配失败"; } ?> 输出: 匹配成功google
+ 匹配前一个内容的1次或多次
例如:
<?php $mode="/go+gle/"; //与 * 的用法类似,将0次排除在外。 $str="gooogle"; $flag=preg_match($mode, $str, $arr); //print_r($arr); if($flag){ echo "匹配成功".$arr[0]; }else{ echo "匹配失败"; } ?> 输出: 匹配成功gooogle
?匹配前一个内容的0次或1次
例如:
<?php $mode="/go?gle/"; //与*用法类似,将多次排除在外 $str="gogle"; $flag=preg_match($mode, $str, $arr); //print_r($arr); if($flag){ echo "匹配成功".$arr[0]; }else{ echo "匹配失败"; } ?> 输出: 匹配成功gogle
| 选择匹配类似PHP中的| (因为这个运算符合是弱类型导致前面最为整体匹配)
例如:
<?php $mode="/google|abc/"; //google和bac 同时在$str中出现 或者 google出现 或者 bac出现。 $str="googlebac"; $flag=preg_match($mode, $str, $arr); //print_r($arr); if($flag){ echo "匹配成功".$arr[0]; }else{ echo "匹配失败"; } ?> 输出: 匹配成功google
^ 匹配字符串首部内容
例如:
<?php $mode="/^google/"; //字符串google出现在$str的首部 $str="googleabc"; $flag=preg_match($mode, $str, $arr); //print_r($arr); if($flag){ echo "匹配成功".$arr[0]; }else{ echo "匹配失败"; } ?> 输出: 匹配成功google
$ 匹配字符串尾部内容
例如:
<?php $mode="/google$/"; //google出在$str的尾部 $str="abcgoogle"; $flag=preg_match($mode, $str, $arr); //print_r($arr); if($flag){ echo "匹配成功".$arr[0]; }else{ echo "匹配失败"; } ?> 输出: 匹配成功google
\b 匹配单词边界,边界可以是空格或者特殊符合
例如:
<?php $mode="/\bgoogle\b /"; //匹配$str中的空格或者是其他字符 $str="abc google "; $flag=preg_match($mode, $str, $arr); //print_r($arr); if($flag){ echo "匹配成功".$arr[0]; }else{ echo "匹配失败"; } ?> 输出: 匹配成功google
\B 匹配除带单词边界之外的内容
例如:
<?php $mode="/\bgoogle\B/"; //匹配除带单词之外的内容 $str="abc googleabc"; $flag=preg_match($mode, $str, $arr); //print_r($arr); if($flag){ echo "匹配成功".$arr[0]; }else{ echo "匹配失败"; } ?> 输出: 匹配成功google
{m} 匹配前一个内容的重复次数为M次
例如:
<?php $mode="/go{2}gle/"; //匹配$str中的字符 o 出现2次 $str="google"; $flag=preg_match($mode, $str, $arr); //print_r($arr); if($flag){ echo "匹配成功".$arr[0]; }else{ echo "匹配失败"; } ?> 输出: 匹配成功google
{m,} 匹配前一个内容的重复次数大于等于M次
例如:
<?php $mode="/go{2,}gle/"; //匹配$str中字符 o 的次数大于等于2次 $str="gooogle"; $flag=preg_match($mode, $str, $arr); //print_r($arr); if($flag){ echo "匹配成功".$arr[0]; }else{ echo "匹配失败"; } ?> 输出: 匹配成功gooogle
{m,n} 匹配前一个内容的重复次数M次到N次
例如:
<?php $mode="/go{2,4}gle/"; //匹配$str中字符 o 大于2次小于4次 $str="gooogle"; $flag=preg_match($mode, $str, $arr); //print_r($arr); if($flag){ echo "匹配成功".$arr[0]; }else{ echo "匹配失败"; } ?> 输出: 匹配成功gooogle
( ) 合并整体匹配,并放入内存,可使用\1 \2…依次获取
例如:
<?php $mode="/goo(abc)gle/"; //匹配$str中的abc $str="gooabcgle"; $flag=preg_match($mode, $str, $arr); //print_r($arr); if($flag){ echo "匹配成功".$arr[0]; }else{ echo "匹配失败"; } ?> 输出: 匹配成功gooabcgle
PHP中正则表达式学习及应用(二)
本节内容的视频教程:链接: http://pan.baidu.com/s/1bn4UaiN 密码: net6