【正则使用】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匹配
$regex = '/^(Chuanshanjia)[\w\s!]+\1$/' ; $str = 'Chuanshanjia thank Chuanshanjia' ; $matches = array (); if (preg_match( $regex , $str , $matches )){ var_dump( $matches ); } echo "\n" ; |
$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) 编辑 收藏 举报