常用正则表达式语法
1、常用的元字符和限定符
* 前边的内容可以连续重复使用任意次以使整个表达式得到匹配,不匹配字符,代表数量 d{2} 意思是前面的d必须连续重复匹配2次 s 匹配任意的空白符,包括空格、制表符、换行符、中文全角空格。 d+ 匹配1个或更多连续数字。这里的+是和*类似的元字符,不同的是*匹配重复任意次(可能是0次),而+则匹配重复1次或更多次。 d{5,12} {5,12}与前面的{2}类似,只不过{2}匹配只能是2次,而{5,12}则是重复的次数不能少于5次,不能多于12次 转义字符,可以使用*来匹配*
2、字符转义:如果你想查找元字符本身的话,需要在元字符前面加 例如,查找*,使用*
3、字符集合:[] 使用中括号([])将一些字符括起来可以表示这些字符的集合,例如: [aeiou] 匹配任何一个英文元音字母 [.?!]匹配标点符号 我们也可以使用字符集合指定一个字符范围,例如 [0-9] 代表的含义与/d完全一致,一位数字。
4、分支条件:| | 分支条件,有几种规则,只要满足其中任意一种,几种规则用|分开,如果满足其中任意一种规则则都应该当成匹配。 例如: 0d{2}-d{8}|0d{3}-d{7}这个表达式能匹配两种以连字号分隔开的电话号码:一种是三位区号8位本地号,另一种是4位区号7位本地号
5、分组 (dw){3} 表示一个数字和w的组合重复三次,多个字符重复使用小括号来指定子表达式(也叫做分组),然后你就可以指定这个字表达式的重复次数了。 例如: (hello){3} 代表匹配三个连续的hello
6、零宽断言 用于查找某些内容(但并不包括这些内容)之前或之后的东西,它们像b,^,$那样用于指定一个位置,这个位置应该满足一定的条件即断言,语法如下:
(?=exp) 断言自身出现的位置的后面能匹配表达式exp。 (?<=exp)断言自身出现的位置的前面能匹配表达式exp。 例如: $content = "<p>I am fine!</p>"; $reg = '/(?<=>)[wW]+(?=<)/'; preg_match_all($reg,$content,$result); print_r($result); 代码中(?<=>)匹配的是>后面的内容,而[wW]+则匹配的是任意多于一个的字符(包括字母、数字、下划线、空白符),而(?=<)匹配的是<前面的位置,所以代码执行结果是:I am fine!
参考:http://www.aspzz.cn/tools/zhengze.html#backreference (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |