您的位置:首页 > 其它

正则表达式

2015-11-18 16:17 225 查看
今天看到一正则表达式:
/(.*?:\/\/)(.*)/


对第一个星号后面的问号不懂。查了下发现是非贪婪模式。

干脆把相关东西整理一下。并找到一个很好的网站,还可以参考这个

正则表达式到底是什么?

按照网上的说法可以这么描述:

正则表达式就是一种模式,这种模式有一个或者多个

字符(character literals)、运算符(operators),构造(constructs)构成。

字符:

(1)character escapes,转义字符。

匹配一个字符,这个字符要么匹配一个特殊字符,要么匹配一个原义字符。

比如\t匹配的是特殊字符tab,这些特殊的字符有专门的定义。

如果一个字符不在这个定义范围内,那么匹配的就是字符本身,比如\*用来匹配星号。

(2)character classes,暂时叫字符类。

字符类匹配的是一个某类字符。英文写成character class。

字符类本身可能有多个字符表示,比如[]或者\d。

但是有一点要注意的是,这个只匹配一个字符。

(3)anchors,锚定字符。

不匹配具体的字,但是用来制定匹配的位置。

前面的匹配关心的是内容。但是很多时候需要关心在什么地方进行匹配。

构造

(4)group construts,组构造器。

匹配由多个字符组成的一组字符。

(5)alternation constructs,变换构造器。一般和Group construts放一起说。

(6)backreference constructs,反引用构造器。

数量

(7)quantifiers,数量字符。

标记用于制定前面元素的数量。这个元素可以是某个字符,某类字符,以及某一组字符。比如+字符,\b+就是制定某类字符出现的数量,

(8)substitution,替换字符。

细分的话有这八类。也有的把其中几类分到一起。

这里只写个解析时候最顶层的分类分析。

说明

quantifiers 可以用来group所以

(\d{2}){2,4}
是合法的,并且能匹配1234567890的前8个字符。

(\d{2}){2,4}?
是合法的,并且能匹配1234567890的前4个字符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  正则表达式