最近因为工作需要恶补了一点正则方面的知识,特写篇博客记之。
废话不多说,直接进入正题。
正则表达式的组成部分
原子是组成正则表达式的基本单位,在分析正则的时候作为一个整体主要包括如下内容:
->单个数字或者字母:A-Z,a-z,0-9。
->模式单元,如(abc)可以理解为多个原子组成的大原子
->原子表,[abc]:匹配abc中的任意一个
->普通的转义字符,如\d
->特殊的转义元字符
->元字符
备注:元字符是用于构造表达式的具有特殊含义的字符。
* 零次或多次匹配前面的(原子)字符或子表达式。例如,zo* 匹配“z”和“zoo”。* 等效于 {0,}。
+ 一次或多次匹配前面的(原子)字符或子表达式。例如,“zo+”与“zo”和“zoo”匹配,但与“z”不匹配。+ 等效于 {1,}
? 零次或一次匹配前面的(原子)字符或子表达式。例如,“do(es)?”匹配“do”或“does”中的“do”。? 等效于 {0,1}。
| 匹配两个或多个选择
^ 匹配字符串串首的(原子)字符或子表达式。
$ 匹配字符串串尾的(原子)字符或子表达式。
\b 匹配单词的边界
\B 匹配除单词边界以外的部分
[] 匹配括号中的任意(原子)字符或子表达式。
[^] 匹配除方括号中的原子以外的任何字符。
{m} 表示其前原子恰好出现m次。
{m,n} 表示其前原子至少出现m次,至多出现n次。
{m,} 表示其原子出现不少于m次。
() 整体表示一个原子字符或子表达式。(aa){2}匹配2个aa
. 匹配除换行符之外的任意字符。等等其余的不一一列出。下面是实例:
<?php
preg_match("/../","adc",$a);//匹配两个任意字符
var_dump($a);//输出的是ad
preg_match("/(aa|as)/","dsdsds",$a);//匹配aa或者as
?>
普通转义字符:
\d、\D、\w、\W、\S、\s等等
模式修饰符:
i -可同时匹配大小写字母
M -将字符串视为多行
S -将字符串视为单行,换行符做普通字符看待,使“.”匹配任何字符
X -模式中的空白忽略不计
U -匹配到最近的字符串
e -将替换的字符串作为表达使用
单词边界限制: "this island is a beautiful land"
\b 对单词的边界进行匹配 例如:/\bis\b/表示is左右两侧都不能有空格.匹配is
\B 对单词边界以外的部分进行匹配。例如/\Bis/ 匹配 this
笔记先到这里,下次有空再记
原文:http://www.cnblogs.com/fczhou/p/3565808.html