zoukankan      html  css  js  c++  java
  • js正则表达式的贪婪匹配和惰性匹配

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

    什么是贪婪匹配?

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

    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, 匹配了,保存这个结果,再从下一个开始

    ......

  • 相关阅读:
    R
    R 包的安装,使用,更新
    R 安装 简单实用
    R 介绍
    mongo:用户管理
    MySQL 书籍
    mongo: 索引
    blog
    游标处理
    如何在ASP.NET的web.config配置文件中添加MIME类型
  • 原文地址:https://www.cnblogs.com/lyzz1314/p/15650460.html
Copyright © 2011-2022 走看看