正则表达式一直是我的弱项,平时项目里用到很多时候都是去网上查。所以趁项目完结系统的又重新学习了下。
我们来看一个正则表达式:
#<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个数字
本文介绍了正则表达式的构成及基本使用方法,并通过实例详细解释了元字符的作用和量词的使用。

569

被折叠的 条评论
为什么被折叠?



