ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js正则表达式的贪婪匹配和惰性匹配

2021-12-06 16:32:32  阅读:137  来源: 互联网

标签:量词 false 一个 re1 js 惰性 test 匹配


量词*量词+ 都是默认的贪婪匹配,在量词后面加上问号?就改成了惰性匹配!

什么是贪婪匹配?

匹配过程是从整个字符串开始查看,如果不匹配就去掉最后一个,再看看是否匹配,如此循环一直到匹配或字符串空为止,如:

vars ="abbbaabbbaaabbb1234";

varre1=/.bbb/g;//是贪婪量词

re1.test(s);

这个匹配过程将从整个字符串开始:

re1.test("abbbaabbbaaabbb1234");//false ,则去掉最后一个字符4再继续

re1.test("abbbaabbbaaabbb123");//false ,则去掉最后一个字符3再继续

re1.test("abbbaabbbaaabbb12");//false ,则去掉最后一个字符2再继续

re1.test("abbbaabbbaaabbb1");//false ,则去掉最后一个字符1再继续

re1.test("abbbaabbbaaabbb");//true ,结束

在贪婪量词的后面加多一个?就变成了惰性量词,它的匹配过程相反,是从前面第一个开始,不匹配则加一个,如此循环直到字符串结束,以上面的为例子。

vars ="abbbaabbbaaabbb1234";

varre1=/.?bbb/g;//?是惰性量词

注意:?是加在bbb前面的,即紧跟对应的量词后面
re1.test(s);

它的匹配过程如下:

re1.test("a");//false, 再加一个

re1.test("ab");//false, 再加一个

re1.test("abb");//false, 再加一个

re1.test("abbb");//true, 匹配了,保存这个结果,再从下一个开始

re1.test("a");//false, 再加一个

re1.test("aa");//false, 再加一个

re1.test("aab");//false, 再加一个

re1.test("aabb");//false, 再加一个

re1.test("aabbb");//true, 匹配了,保存这个结果,再从下一个开始

......

标签:量词,false,一个,re1,js,惰性,test,匹配
来源: https://www.cnblogs.com/lyzz1314/p/15650460.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有