首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >正则表达式中的.*,.*?,.+?的含义

正则表达式中的.*,.*?,.+?的含义

作者头像
用户9914333
发布2022-07-22 14:55:25
发布2022-07-22 14:55:25
1.5K0
举报
文章被收录于专栏:bug收集bug收集

. 表示匹配除换行符 \n 之外的任何单字符

* 表示零个或多个

+ 表示一个或者多个

? 表示零个或者一个

那么表达式 .* ,.*? ,.+? 的含义分别是什么呢?

可先自己思考下!

0 1

表达式 .*

就是单个字符匹配任意次,即贪婪匹配。 表示任意字符出现零次或多次。

比如:

匹配字符串:

<img src=``test.jpg` width=`60px` height=`80px`/>

匹配模式:

src=`.*` 去匹配,

解析:它将会匹配最长的以 src=` 开始,以`结束的最长的字符串。

匹配结果:

src=``test.jpg` width=`60px` height=`80px`

0 2

表达式 .*?

就是满足条件的情况只匹配一次,即最小匹配。

?跟在*或者+后边用时,表示懒惰模式。也称非贪婪模式。就是匹配尽可能少的字符。就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。

a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。

比如:

匹配字符串:

<img src=``test.jpg` width=`60px` height=`80px`/>

匹配模式:

src=`.*?` 去匹配,

匹配结果:

src=``

0 3

表达式 .+?

同上,?跟在*或者+后边用时,表示懒惰模式。也称非贪婪模式。就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。

a.+?b匹配最短的,以a开始,以b结束的字符串,但a和b中间至少要有一个字符。如果把它应用于ababccaab的话,它会匹配abab(第一到第四个字符)和aab(第七到第九个字符)。注意此时匹配结果不是ab,ab和aab。因为a和b中间至少要有一个字符。

比如:

匹配字符串:

<img src=``test.jpg` width=`60px` height=`80px`/>

匹配模式:

src=`.+?` 去匹配,

匹配结果:

src=``test.jpg`

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bug收集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档