merlin

精益求精

孤鸿

导航

【正则使用】php

http://www.cnblogs.com/baochuan/archive/2012/03/12/2391135.html#fanxiangyinyong

 元字符

  正则具有特殊意义的专用字符

  \w 匹配 字母数字下划线汉字

  \s 空白符 

  \d 数字 

  - 表示范围

  [] 匹配括号中任意个字符

  

 ^:

          > 放在字符域(如:[^\w])中表示否定(不包括的意思)——“反向选择”

          >  放在表达式之前,表示以当前这个字符开始。(/^n/i,表示以n开头)。

 分组:

零宽度断言:

(?=exp) 匹配exp前面的位置  (?<=exp) 匹配后面的位置

(?<=c)d(?=e) 匹配字符 d 前面是c后面是e  (?=e)与d匹配

正向预查:(?=) 相对应的 (?!)表示否定意思
反向预查:(?<=) 相对应的 (?<!)表示否定意思
捕获数据
 
没有指明类型而进行的分组,将会被获取,供以后使用。
> 指明类型指的是通配符。所以只有圆括号起始位置没有问号的才能被捕捉。

> 在同一个表达式内的引用叫做反向引用。
> 调用格式: \编号(如\1)。
$regex = '/^(Chuanshanjia)[\w\s!]+\1$/';   
$str = 'Chuanshanjia thank Chuanshanjia';
$matches = array();
 
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

 

> 避免捕获数据
   格式:(?:pattern)
   优点:将使有效反向引用数量保持在最小,代码更加、清楚。
 
>命名捕获组
   格式:(?P<组名>) 调用方式 (?P=组名)
$regex = '/(?P<author>chuanshanjia)[\s]Is[\s](?P=author)/i';
$str = 'author:chuanshanjia Is chuanshanjia';
$matches = array();
 
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}
 
echo "\n";

运行结果

贪婪、懒惰匹配模式
 
 

  格式:限定符?

     原理:"?":如果前面有限定符,会使用最小的数据。如“*”会取0个,而“+”会取1个,如过是{3,5}会取3个

 

  *?  +? ?? ... 尽可能少的匹配

  

$str="[url]sf.jg[/url][url]sf.jg[/url][url]sf.jg[/url][url]sf.jg[/url]";
$pattern='/\[url\](.*?)\[\/url\]/';//// 0 => string '[url]sf.jg[/url]' (length=16) 1 => string 'sf.jg' (length=5)
$pattern='/\[url\]([^\[]*)\[\/url\]/';//

preg_match($pattern,$str,$matches);
var_dump($matches);

// 0 => string '[url]sf.jg[/url][url]sf.jg[/url][url]sf.jg[/url][url]sf.jg[/url]' (length=64)
// 1 => string 'sf.jg[/url][url]sf.jg[/url][url]sf.jg[/url][url]sf.jg' (length=53)

//贪婪模式
//$pattern='/\[url\](.*?)\[\/url\]/';//// 0 => string '[url]sf.jg[/url]' (length=16) 1 => string 'sf.jg' (length=5)
//反义
$pattern='/\[url\]([^\[]*)\[\/url\]/';//

 采用贪婪或反义得到想要匹配的结果

 

正则常用的模式

i 匹配大小写

u支持utf-8转义

$str="阿桑地方";
$pattern='/\[url\](.*?)\[\/url\]/';
$pattern='/^[\x{4e00}-\x{9fa5}]+$/u';//
//array (size=1)
// 0 => string '阿桑地方' (length=12)

 

posted on 2013-07-03 14:52  天地一连线_孤鸿挂飘渺  阅读(134)  评论(0编辑  收藏  举报