标签:
正则表达式几乎上编程语言上面都有自己的一席之地,由于最近在看一些国外大神的源代码中多处用到了正则表达式,对于正则表达式,自己也使用的不多,难免感觉到生涩,所以最近查了很多资料,让自己对正则表达式有有些许的理解。
1:正则表达式的定义
当使用PCRE函数的时候,需要使用分隔符将模式括起来。分隔符可以是除下列字符以外的其他字符:字母或数字,反斜杠,空白字符(non-alphanumeric, non-backslash, non-whitespace),经常使用的分隔符有:斜杠(/,forward slash),井号(#,hash sign)和波浪号(~,tilde)。下面是一些有效的模式
/foo bar/ #^[^0-9]$# +php+ %[a-zA-Z0-9_-]%
2:正则表达式中的特殊字符需要进行转义,也就是在每个特殊字符前加上反斜杠(\),特殊字符如下
.:匹配除“\n”之外的任何单个字符 \:将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符 +:匹配前面的子表达式一次或者是多次 *:匹配前面的子表达式零次或者是多次 ?:匹配前面过的子表达式零次或者是一次 []:字符集合。匹配所包含的任意一个字符 {}:匹配确定的n次 (pattern):匹配pattern并获取这一匹配 ^:匹配输入字符串的开始位置 $:匹配输入字符串的结束位置 -:通常用于[0-9],表示匹配0到9这个范围内的任意一个数字 |:表示或的关系 还有>、<、
(?:pattern):匹配pattern,但是不捕获内容
3:结合[]、()和?:进行URL的解析
$pattern = ‘~http\://((?:[\w]*\.?)+)((?:/[\w|\d]*)*)\?((?:[\w|\d]*\=[\d|\w]*&?)*)~x‘; $str = "http://framework.easy.com/user/local?name=tom&age=10"; preg_match_all($pattern,$str,$matchs,PREG_SET_ORDER | PREG_OFFSET_CAPTURE ); echo "<pre>"; print_r($matchs); echo "</pre>"; /** ** 结果 **/ Array ( [0] => Array ( [0] => Array ( [0] => http://framework.easy.com/user/local?name=tom&age=10 [1] => 0 ) [1] => Array ( [0] => framework.easy.com [1] => 7 ) [2] => Array ( [0] => /user/local [1] => 25 ) [3] => Array ( [0] => name=tom&age=10 [1] => 37 ) ) )
标签:
原文地址:http://www.cnblogs.com/axunz/p/5072877.html