微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

常用正则表达式语法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐