您的位置:首页 > 编程语言 > PHP开发

正则表达式学习(一)认识正则表达式

2016-09-12 08:50 197 查看
正则表达式一直是我的弱项,平时项目里用到很多时候都是去网上查。所以趁项目完结系统的又重新学习了下。

我们来看一个正则表达式:

#<div\s+[^>]*>(.*?)<\/div>#i


一个完整的正则表达式如上,有三部分组成:分隔符、表达式、修饰符

①分隔符

除了字母、数字、下划线、空白符以外的任何字符,比如/、#、~、%、@等。比较常用的就是/、#和~,但是为了避免与反斜线混淆,一般不用/。

②表达式

表达式就是我们所写的匹配规则,由一些特殊字符和非特殊字符组成的。表达式包括元字符、字符组、分支、环视等一些正则表达式的元素。

③修饰符

可以理解为某种模式,比如i表示忽略大小写模式,U表示懒惰模式,s表示跨行匹配模式等等。

测试工具

学习正则表达式可以使用一个叫Regex  Tester的工具。网上搜一下就能找到。打开后是这样子的:



可以直接输入正则表达式,然后可以勾选相应的修饰规则,点Test,就可以得到匹配的结果。学习正则表达式用这个工具还是蛮方便的。

好了首先今天来一起学习下元字符,那什么是元字符呢?

元字符是正则表达式里具有特殊意义的专用字符,用来规定其前导字符在目标对象中的出现模式。比如\b表示英文单词的界定符,.表示任意一个除了换行符之外的字符。以下列出所有的元字符:

元字符 描述
.匹配除换行符以外的任意一个字符
\w匹配字母、数字、下划线、中文
\s匹配任意空白符
\d匹配数字
\b匹配单词的开始或结束,或排除符
^匹配字符串的开始
$匹配字符串的结束
-表示范围,用在字符组里
[]匹配[]中的任意一个字符
*匹配0个或多个
+匹配1个或多个
?匹配0个或1个
下面举几个例子说明下:

①匹配html中所有的标签

#<\/?\w+[^>]*>#iU

这里<\/,/也可以是正则表达式的分隔符,为了避免歧义,用反斜线进行转义。

?表示包含/或者不包含,\w+表示匹配<>内的标签名称,[^>]这里表示匹配除了^的任意一个字符[^>]*表示匹配除了^的0个或多个字符

②匹配以a开头的单词

#\ba[a-zA-Z]*\b#

\b表示单词的界定符,[a-zA-Z]表示匹配大小写字母里的任意一个

③匹配地区号码,比如010-123456或(010)123456

#^\(?0\d{2}\)?-?\d{6}$#

其中^,$是开始和结束符,(和)之所以要转义,是因为()后面会讲它作为分支的符合,属于特殊字符。\d{2}表示匹配两个数字。

量词

上面我们看到有时会用到类似于{2}的匹配,这个正则中我们可以叫做量词。

量词有以下几个:

量词描述
*重复0次或多次
+重复1次或多次
?重复0次或1次
{n}重复n次
{n,}重复n次以上
{n,m}重复n次到m次
例如:
\d{2}匹配两个数字

\d{2,}匹配至少两个数字

\d{2,11}匹配2-11个数字
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  正则表达式 php