常用正则表达式语法

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值