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

 

posted @ 2015-08-20 21:39  Yxh_blogs  阅读(205)  评论(0编辑  收藏  举报