正则表达式

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值