正则表达式学习(一)认识正则表达式
2016-09-12 08:50
197 查看
正则表达式一直是我的弱项,平时项目里用到很多时候都是去网上查。所以趁项目完结系统的又重新学习了下。
我们来看一个正则表达式:
一个完整的正则表达式如上,有三部分组成:分隔符、表达式、修饰符
①分隔符
除了字母、数字、下划线、空白符以外的任何字符,比如/、#、~、%、@等。比较常用的就是/、#和~,但是为了避免与反斜线混淆,一般不用/。
②表达式
表达式就是我们所写的匹配规则,由一些特殊字符和非特殊字符组成的。表达式包括元字符、字符组、分支、环视等一些正则表达式的元素。
③修饰符
可以理解为某种模式,比如i表示忽略大小写模式,U表示懒惰模式,s表示跨行匹配模式等等。
测试工具
学习正则表达式可以使用一个叫Regex Tester的工具。网上搜一下就能找到。打开后是这样子的:
可以直接输入正则表达式,然后可以勾选相应的修饰规则,点Test,就可以得到匹配的结果。学习正则表达式用这个工具还是蛮方便的。
好了首先今天来一起学习下元字符,那什么是元字符呢?
元字符是正则表达式里具有特殊意义的专用字符,用来规定其前导字符在目标对象中的出现模式。比如\b表示英文单词的界定符,.表示任意一个除了换行符之外的字符。以下列出所有的元字符:
下面举几个例子说明下:
①匹配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}的匹配,这个正则中我们可以叫做量词。
量词有以下几个:
例如:
\d{2}匹配两个数字
\d{2,}匹配至少两个数字
\d{2,11}匹配2-11个数字
我们来看一个正则表达式:
#<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个数字
相关文章推荐
- 【正则表达式学习笔记之一】简单认识正则表达式
- 正则表达式学习笔记005--脱字符和美元符的认识与应用
- 正则表达式学习笔记006--转义符的认识与应用
- (学习)python非贪婪、多行匹配正则表达式例子 分类: 正则表达式 2013-08-19 11:21 2540人阅读 评论(2) 收藏
- 正则表达式(一)认识正则表达式
- 正则表达式学习笔记010--子表达式的认识与应用
- 正则表达式学习笔记004--连字符和范围描述符的认识与应用
- javascript中正则表达式应用学习_Split()
- 正则表达式学习
- 学习正则表达式(regular expression)
- 正则表达式学习中
- 正则表达式相关学习
- 正则表达式学习小记
- 正则表达式基础学习[1]
- 正则表达式详解(一)正则表达式初步
- 正则表达式学习
- 最近学习正则表达式,接下来会跟大家交流一下
- 学习正则表达式
- 正则表达式学习笔记
- [JavaScript]正则表达式学习