激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java正則之貪婪匹配、惰性匹配

Java正則之貪婪匹配、惰性匹配

2019-12-13 10:55hebedich JAVA教程

這篇文章主要介紹了Java正則之貪婪匹配、惰性匹配的相關資料,需要的朋友可以參考下

貪婪量詞:

先看整個字符串是不是一個匹配。如果沒有發現匹配,它去掉最后字符串中的最后一個字符,并再次嘗試。如果還是沒有發現匹配,那么    再次去掉最后一個字符串,這個過程會一直重復直到發現一個匹配或者字符串不剩任何字符。簡單量詞都是貪婪量詞。

惰性量詞:

先看字符串中的第一個字母是不是一個匹配,如果單獨著一個字符還不夠,就讀入下一個字符,組成兩個字符的字符串。如果還沒有發現匹配,惰性量詞繼續從字符串中添加字符直到發現一個匹配或者整個字符串都檢查過也沒有匹配。惰性量詞和貪婪量詞的工作方式恰好相反。

支配量詞:

只嘗試匹配整個字符串。如果整個字符串不能產生匹配,不做進一步嘗試。

    貪婪量詞   惰性量詞    支配量詞                      描述
    -------------------------------------------------------------------------------------
      ?             ??             ?+                      可以出現0次或1次,但至多出現1次
      *             *?            *+                      可以出現任意次,也可以不出現
      +             +?            ++                      出現1次或多次,但至少出現1次
      {n}        {n}?           {n}+                   一定出現n次
      {n,m}    {n,m}?       {n,m}+               至少出現n次,但至多不能超過m次
      {n,}       {n,}?          {n,}+                 可以出現任意次,但至少出現n次
    例如:我們要從字符串abbbaabbbaaabbb1234中獲得abbb,aabbb,aaabbb的匹配

    1、貪婪量詞

 

復制代碼代碼如下:

       var regexp = /.*bbb/g;
        var a = str.match(regexp);
        alert(a.length);   //output:1
        alert(a[0]);       //output:abbbaabbbaaabbb

 

    貪婪量詞的工作過程可以這樣表示:
      a)abbbaabbbaaabbb1234
      b)abbbaabbbaaabbb123
      c)abbbaabbbaaabbb12
      d)abbbaabbbaaabbb1
      e)abbbaabbbaaabbb //true
    可以看到,貪婪量詞在取得一次匹配后就會停止工作,雖然我們加了'g'(全局匹配)

    2、惰性量詞

 

復制代碼代碼如下:

        var regexp = /.*?bbb/g;
        var a = str.match(regexp);
        alert(a.length);   //output:3
        alert(a[0]);       //output:abbb
        alert(a[1]);       //output:aabbb
        alert(a[2]);       //output:aaabbb

 

    惰性量詞的工作過程可以這樣表示:
      a)a
      b)ab
      c)abb
      d)abbb //保存結果,并從下一個位置重新開始
  
      e)a 
      f)aa 
      g)aab
      h)aabb
      j)aabbb //保存結果,并從下一個位置重新開始
  
      e)a
      e)aa
      e)aaa
      e)aaab 
      e)aaabb 
      e)aaabbb  //保存結果,并從下一個位置重新開始
    由于JS是不支持支配量詞的,所以支配量詞我們只能用JAVA來演示:

 

復制代碼代碼如下:

        String string = "abbbaabbbaaabbb1234";
        Pattern p = Pattern.compile(".*+bbb");
        Matcher m = p.matcher(string);
        System.out.println(m.find());   //output:false

 

    因為支配量詞采用一刀切的匹配方式,如:
    a)abbbaabbbaaabbb1234 //false

以上所述就是本文的全部內容了,希望大家能夠喜歡,能夠對大家熟練掌握java正則匹配有所幫助。請您花一點時間將文章分享給您的朋友或者留下評論。我們將會由衷感謝您的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品自拍啪啪 | 国产成人自拍视频在线观看 | 精品久久一区二区 | 逼片 | 综合网天天射 | 久久久aa | 孕妇体内谢精满日本电影 | 性欧美大战久久久久久久免费观看 | 夜夜夜影院 | 久久国产一级片 | 国产免费传媒av片在线 | 国产小视频在线 | 黄色影视免费看 | 黄色三级三级三级 | 色播视频在线播放 | 九九热播视频 | 国产欧美在线观看不卡一 | 97zyz成人免费视频 | 精品一区二区三区毛片 | 欧美爱爱一区二区 | 国产精品一区在线免费观看 | 日本aaaa片毛片免费观看视频 | 成人性生活视频在线观看 | 娇妻被各种姿势c到高潮小说 | 国产一级做a爱片在线看免 2019天天干夜夜操 | 成人精品久久久 | 精品久久久久久综合日本 | 看免费毛片 | 国产在线第一区 | 久久艹精品 | 国产毛片aaa一区二区三区视频 | 91黄瓜视频 | 在线 日本 制服 中文 欧美 | 成人在线网站 | 亚洲国产精品久久久久久久久久 | 久久中出 | 毛片免费试看 | 一二区电影 | hd性videos意大利复古 | 一级免费在线 | 欧美一级不卡视频 |