最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

實(shí)例解析Java程序中正則表達(dá)式的貪婪模式匹配

 更新時(shí)間:2016年05月11日 17:45:39   作者:chaofanwei  
貪婪模式又叫最大匹配,X?、X*、X+、X{n,}都是最大匹配,例如你要用“<.+>”去匹配“a<tr>aava </tr>abb”,也許你所期待的結(jié)果是想匹配“<tr>”,但是實(shí)際結(jié)果卻會(huì)匹配到“<tr>aava </tr>”,下面我們就來看具體看一下貪婪模式的使用.

貪婪模式(Greedy):

數(shù)量表示符默認(rèn)采用貪婪模式,除非另有表示。貪婪模式的表達(dá)式會(huì)一直匹配下去,直到無法匹配為止。如果你發(fā)現(xiàn)表達(dá)式匹配的結(jié)果與預(yù)期的不符,很有可能是因?yàn)椤阋詾楸磉_(dá)式只會(huì)匹配前面幾個(gè)字符,而實(shí)際上它是貪婪模式,所以會(huì)一直匹配下去。
貪婪與非貪婪,加上?為非貪婪:

var s = '1023000'.match(/(\d+)(0*)/);
s
["1023000", "1023000", ""]

var s = '1023000'.match(/^(\d+)(0*)$/);
s
["1023000", "1023000", ""]

var s = '1023000'.match(/^(\d+?)(0*)$/);
s
["1023000", "1023", "000"]

var s = '1023000'.match(/(\d+?)(0*)/);
s
["10", "1", "0"]

java 正則表達(dá)式默認(rèn)用的是greedy貪婪匹配模式既是這種類型(.*)的最長匹配,如果需要最短匹配則改為(.*?)即是勉強(qiáng)匹配模式。
原理分析:
如果是貪婪匹配模式,正則表達(dá)式引擎會(huì)一直匹配到字符串最后,當(dāng)匹配為false時(shí),通過
回溯的方式,倒退找到倒數(shù)第一個(gè)匹配位置,返回匹配結(jié)果
如果是勉強(qiáng)匹配模式,正則表達(dá)式引擎會(huì)匹配到符合pattern的末尾位置那個(gè)字符,然后再往后走一步,發(fā)現(xiàn)匹配為false,又回溯到找到回退的最近一個(gè)匹配為true的位置,返回結(jié)果。
看代碼:
例一:

  public void test51(){ 
    String str = "aaa\"bbb\"ccc\"ddd\"eee"; 
    System.out.println(str); 
    str = str.replaceAll("\"(.*)\"", "@"); 
    System.out.println(str); 
  } 

輸出:

aaa"bbb"ccc"ddd"eee
aaa@eee

例二:

 @Test 
  public void test52(){ 
    String str = "aaa\"bbb\"ccc\"ddd\"eee"; 
    System.out.println(str); 
     
    str = str.replaceAll("\"(.*?)\"", "@"); 
    System.out.println(str); 
     
  } 

輸出:

aaa"bbb"ccc"ddd"eee
aaa@ccc@eee

相關(guān)文章

  • Java設(shè)計(jì)模式之狀態(tài)模式(State模式)介紹

    Java設(shè)計(jì)模式之狀態(tài)模式(State模式)介紹

    這篇文章主要介紹了Java設(shè)計(jì)模式之狀態(tài)模式(State模式)介紹,本文講解了何時(shí)使用狀態(tài)模式、如何使用狀態(tài)模式等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • 讀寫nacos的配置中心的參數(shù)及變動(dòng)監(jiān)聽方式

    讀寫nacos的配置中心的參數(shù)及變動(dòng)監(jiān)聽方式

    Spring應(yīng)用可以通過NacosDataSource下載配置參數(shù),使用ConfigService的publishConfig方法更新Nacos上的配置,但同一服務(wù)內(nèi)部更新配置不會(huì)觸發(fā)configUpdate事件,ConfigService也提供了監(jiān)聽事件功能
    2026-02-02
  • 詳細(xì)介紹Java中的各種鎖

    詳細(xì)介紹Java中的各種鎖

    不少同學(xué)開始慢慢接觸多線時(shí)候,對(duì)線程之間為了保障數(shù)據(jù)安全性,一致性有所了解,本文詳細(xì)解介紹java中的21種鎖 ,需要的朋友可以參考下
    2021-06-06
  • java調(diào)用未知類的指定方法簡單實(shí)例

    java調(diào)用未知類的指定方法簡單實(shí)例

    這篇文章介紹了java調(diào)用未知類的指定方法簡單實(shí)例,有需要的朋友可以參考一下
    2013-09-09
  • java8新特性-Stream入門學(xué)習(xí)心得

    java8新特性-Stream入門學(xué)習(xí)心得

    這篇文章主要介紹了java8新特性-Stream入門學(xué)習(xí)心得,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java的異常與處理機(jī)制分析【附面試題】

    java的異常與處理機(jī)制分析【附面試題】

    這篇文章主要介紹了java的異常與處理機(jī)制,結(jié)合實(shí)例形式分析了Java異常與處理機(jī)制的概念、原理、相關(guān)操作技巧與注意事項(xiàng),并附帶面試題分析供大家參考,需要的朋友可以參考下
    2019-05-05
  • java棧實(shí)現(xiàn)二叉樹的非遞歸遍歷的示例代碼

    java棧實(shí)現(xiàn)二叉樹的非遞歸遍歷的示例代碼

    這篇文章主要介紹了java棧實(shí)現(xiàn)二叉樹的非遞歸遍歷,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 理解Java訪問權(quán)限控制

    理解Java訪問權(quán)限控制

    這篇文章主要幫助大家深入的理解Java訪問權(quán)限控制,為何需要訪問控制權(quán)限,本文給出了解釋,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 使用JavaMail發(fā)送郵件保證成功的方法

    使用JavaMail發(fā)送郵件保證成功的方法

    JavaMail是利用現(xiàn)有的郵件賬戶發(fā)送郵件的工具,使用過JavaMail的api發(fā)送郵件的人可能會(huì)有這樣一個(gè)疑惑:我如何知道我調(diào)用該api發(fā)送的郵件是否成功呢?那么通過下面這篇文章大家一起來看看使用JavaMail保證郵件發(fā)送成功的方法,有需要的朋友們可以參考借鑒。
    2016-11-11
  • Java實(shí)現(xiàn)可視化走迷宮小游戲的示例代碼

    Java實(shí)現(xiàn)可視化走迷宮小游戲的示例代碼

    這篇文章主要介紹了Java如何實(shí)現(xiàn)可視化走迷宮小游戲。本程序適用于java程序員鞏固類與對(duì)象、文件讀取、事件響應(yīng)、awt包中各種工具的相關(guān)概念以及對(duì)邏輯能力的鍛煉,需要的可以參考一下
    2022-11-11

最新評(píng)論

丹巴县| 怀安县| 平泉县| 阿荣旗| 襄垣县| 庐江县| 兰西县| 五原县| 南阳市| 喜德县| 庆阳市| 罗平县| 隆安县| 克东县| 蕲春县| 拜泉县| 洛隆县| 商都县| 深州市| 奉节县| 和政县| 茶陵县| 右玉县| 云霄县| 白朗县| 德阳市| 德兴市| 治县。| 东丰县| 运城市| 仁布县| 武冈市| 肇源县| 楚雄市| 北碚区| 平陆县| 公安县| 响水县| 合水县| 黔南| 凤山市|