现在的位置: 首页 > 综合 > 正文

常用正则表达式语法

2018年04月14日 ⁄ 综合 ⁄ 共 1059字 ⁄ 字号 评论关闭

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、分支条件:|

|  分支条件,有几种规则,只要满足其中任意一种,几种规则用|分开,如果满足其中任意一种规则则都应该当成匹配。

例如:

0\d{2}-\d{8}|0\d{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 = '/(?<=>)[\w\W]+(?=<)/';
preg_match_all($reg, $content, $result);
print_r($result);

代码中(?<=>)匹配的是>后面的内容,而[\w\W]+则匹配的是任意多于一个的字符(包括字母、数字、下划线、空白符),而(?=<)匹配的是<前面的位置,所以代码执行结果是:I am fine!


参考:http://www.jb51.net/tools/zhengze.html#backreference

抱歉!评论已关闭.