关闭

正则表达式

标签: 正则表达式
133人阅读 评论(0) 收藏 举报
分类:

今天看到一正则表达式:/(.*?:\/\/)(.*)/
对第一个星号后面的问号不懂。查了下发现是非贪婪模式。
干脆把相关东西整理一下。并找到一个很好的网站,还可以参考这个


正则表达式到底是什么?
按照网上的说法可以这么描述:
正则表达式就是一种模式,这种模式有一个或者多个
字符(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个字符。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    文章分类