程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 實例解析Java法式中正則表達式的貪心形式婚配

實例解析Java法式中正則表達式的貪心形式婚配

編輯:關於JAVA

實例解析Java法式中正則表達式的貪心形式婚配。本站提示廣大學習愛好者:(實例解析Java法式中正則表達式的貪心形式婚配)文章只能為提供參考,不一定能成為您想要的結果。以下是實例解析Java法式中正則表達式的貪心形式婚配正文


貪心形式(Greedy):

數目表現符默許采取貪心形式,除非尚有表現。貪心形式的表達式會一向婚配下去,直到沒法婚配為止。假如你發明表達式婚配的成果與預期的不符,很有能夠是由於——你認為表達式只會婚配後面幾個字符,而現實上它是貪心形式,所以會一向婚配下去。
貪心與非貪心,加上?為非貪心:

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 正則表達式默許用的是greedy貪心婚配形式既是這類類型(.*)的最長婚配,假如須要最短婚配則改成(.*?)等於委曲婚配形式。
道理剖析:
假如是貪心婚配形式,正則表達式引擎會一向婚配到字符串最初,當婚配為false時,經由過程
回溯的方法,發展找到倒數第一個婚配地位,前往婚配成果
假如是委曲婚配形式,正則表達式引擎會婚配到相符pattern的末尾地位誰人字符,然後再往後走一步,發明婚配為false,又回溯到找到回退的比來一個婚配為true的地位,前往成果。
看代碼:
例一:

  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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved