【regex】以大局为重的匹配优先量词

以大局为重的匹配优先量词

在正则表达式中有三个匹配优先的量词,分别是*, +, ?

所谓匹配优先,其实就是日常说的贪婪,它们会尽可能的匹配更多的字符,换一种说法,它们一般会匹配大于下限,它们好像一群好久没吃饱饭的穷苦人民,有东西吃,当然要尽可能吃的更多啊!

比如说,现在有这样一个字符串

 hello man!

如果我用 .* 去匹配,得到的将会是 hello man! 整个串。因为 * 是匹配优先的。、

尽管如此,有的时候国家利益大于个人利益,在有些情况下,它们不得不交还 “粮食” 给国家,尽管是匹配优先。

比如说我有下面的这个字符串

hello man1234

现在我用.*\d{4}去匹配,你会发现 .* 只匹配了前面的 hello man,后面的 1234没有被匹配到,这是为啥,*不是匹配优先的量词吗?

是是,但是有的时候匹配优先的量词也要以大局为重啊!它的匹配过程是这样的,首先执行的.*会因为匹配优先把hello man1234都匹配到,但是现在轮到\d{4}了,如果.*把所有的都匹配完了,那么整个正则就不可能匹配成功了,于是.*开始交还4,发现还是不能满足,于是交还3,发现还是不能满足,一直到交还了1,现在可以满足匹配了,于是返回匹配成功。

所以说,匹配优先量词只是在以大局为重的情况下进行的匹配优先!!

大橘为重!!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值