欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2015年03月26日 10:24:53   投稿:hebedich  
這篇文章主要介紹了Java正則之貪婪匹配、惰性匹配的相關(guān)資料,需要的朋友可以參考下

貪婪量詞:

先看整個(gè)字符串是不是一個(gè)匹配。如果沒(méi)有發(fā)現(xiàn)匹配,它去掉最后字符串中的最后一個(gè)字符,并再次嘗試。如果還是沒(méi)有發(fā)現(xiàn)匹配,那么    再次去掉最后一個(gè)字符串,這個(gè)過(guò)程會(huì)一直重復(fù)直到發(fā)現(xiàn)一個(gè)匹配或者字符串不剩任何字符。簡(jiǎn)單量詞都是貪婪量詞。

惰性量詞:

先看字符串中的第一個(gè)字母是不是一個(gè)匹配,如果單獨(dú)著一個(gè)字符還不夠,就讀入下一個(gè)字符,組成兩個(gè)字符的字符串。如果還沒(méi)有發(fā)現(xiàn)匹配,惰性量詞繼續(xù)從字符串中添加字符直到發(fā)現(xiàn)一個(gè)匹配或者整個(gè)字符串都檢查過(guò)也沒(méi)有匹配。惰性量詞和貪婪量詞的工作方式恰好相反。

支配量詞:

只嘗試匹配整個(gè)字符串。如果整個(gè)字符串不能產(chǎn)生匹配,不做進(jìn)一步嘗試。

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

    1、貪婪量詞

復(fù)制代碼 代碼如下:

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

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

    2、惰性量詞

復(fù)制代碼 代碼如下:

        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

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

復(fù)制代碼 代碼如下:

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

    因?yàn)橹淞吭~采用一刀切的匹配方式,如:
    a)abbbaabbbaaabbb1234 //false

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡,能夠?qū)Υ蠹沂炀氄莆誮ava正則匹配有所幫助。

請(qǐng)您花一點(diǎn)時(shí)間將文章分享給您的朋友或者留下評(píng)論。我們將會(huì)由衷感謝您的支持!

相關(guān)文章

  • 詳解Java編程中final,finalize,finally的區(qū)別

    詳解Java編程中final,finalize,finally的區(qū)別

    這篇文章主要介紹了詳解Java編程中final,finalize,finally的區(qū)別,這個(gè)在Java面試題中簡(jiǎn)直是太常見(jiàn)了...需要的朋友可以參考下
    2015-11-11
  • java 字浮串提取方法匯集

    java 字浮串提取方法匯集

    用方法toCharArray public char[] toCharArray()
    2008-10-10
  • IDEA-Maven項(xiàng)目的jdk版本設(shè)置方法

    IDEA-Maven項(xiàng)目的jdk版本設(shè)置方法

    我們需要設(shè)置jdk的版本,不然會(huì)提示導(dǎo)致語(yǔ)法錯(cuò)誤,這篇文章主要介紹了IDEA-Maven項(xiàng)目的jdk版本設(shè)置方法,小編覺(jué)得不錯(cuò),一起來(lái)了解一下
    2019-04-04
  • 基于logback實(shí)現(xiàn)純java版本的SDK組件

    基于logback實(shí)現(xiàn)純java版本的SDK組件

    這篇文章主要介紹了基于logback實(shí)現(xiàn)純java版本的SDK組件,在項(xiàng)目開(kāi)發(fā)過(guò)程中通常會(huì)使用logback作為日志記錄的依賴工具,使用方式是引入logback相關(guān)jar包,然后配置logback.xml配置文件的方式來(lái)實(shí)現(xiàn),需要的朋友可以參考下
    2023-11-11
  • Java中繼承、多態(tài)、重載和重寫(xiě)介紹

    Java中繼承、多態(tài)、重載和重寫(xiě)介紹

    這篇文章主要介紹了Java中繼承、多態(tài)、重載和重寫(xiě)介紹,需要的朋友可以參考下
    2014-07-07
  • Mybatis使用Collection屬性的示例代碼

    Mybatis使用Collection屬性的示例代碼

    本文主要介紹了Mybatis使用Collection屬性的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 利用Redis實(shí)現(xiàn)延時(shí)處理的方法實(shí)例

    利用Redis實(shí)現(xiàn)延時(shí)處理的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于利用Redis實(shí)現(xiàn)延時(shí)處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java forEach對(duì)原數(shù)組的操作過(guò)程

    Java forEach對(duì)原數(shù)組的操作過(guò)程

    forEach對(duì)于基本數(shù)據(jù)類型,是直接賦值,對(duì)于引用數(shù)據(jù)類型,是引用地址值,forEach遍歷時(shí),是創(chuàng)建的臨時(shí)變量,引用的數(shù)據(jù)地址,本文給大家介紹Java forEach對(duì)原數(shù)組的操作過(guò)程,感興趣的朋友一起看看吧
    2024-02-02
  • SpringBoot整合EasyExcel實(shí)現(xiàn)導(dǎo)入導(dǎo)出數(shù)據(jù)

    SpringBoot整合EasyExcel實(shí)現(xiàn)導(dǎo)入導(dǎo)出數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了如何使用Vue、SpringBoot和EasyExcel實(shí)現(xiàn)導(dǎo)入導(dǎo)出數(shù)據(jù)功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • 源碼解析帶你了解LinkedHashMap

    源碼解析帶你了解LinkedHashMap

    大多數(shù)情況下,只要不涉及線程安全問(wèn)題,Map基本都可以使用HashMap,不過(guò)HashMap有一個(gè)問(wèn)題,就是迭代HashMap的順序并不是HashMap放置的順序,也就是無(wú)序。HashMap的這一缺點(diǎn)往往會(huì)帶來(lái)困擾,所以LinkedHashMap就閃亮登場(chǎng)了,這篇文章通過(guò)源碼解析帶你了解LinkedHashMap
    2021-09-09

最新評(píng)論