实例解析Java程序中正则表达式的贪婪模式匹配
发布时间:2020-11-18 00:01:33  所属栏目:Java  来源:互联网 
            导读:贪婪模式(Greedy):数量表示符默认采用贪婪模式,除非另有表示。贪婪模式的表达式会一直匹配下去,直到无法匹配为止。如果你发现表达式匹配的结果与预期的不符,很有可能是因为――你以为表达式只会匹配前面几个字符
                
                
                
            | 
                         贪婪模式(Greedy): 数量表示符默认采用贪婪模式,除非另有表示。贪婪模式的表达式会一直匹配下去,直到无法匹配为止。如果你发现表达式匹配的结果与预期的不符,很有可能是因为――你以为表达式只会匹配前面几个字符,而实际上它是贪婪模式,所以会一直匹配下去。 var s = '1023000'.match(/(d+)(0*)/); s ["1023000","1023000",""] var s = '1023000'.match(/^(d+)(0*)$/); s ["1023000",""] var s = '1023000'.match(/^(d+?)(0*)$/); s ["1023000","1023","000"] var s = '1023000'.match(/(d+?)(0*)/); s ["10","1","0"] java 正则表达式默认用的是greedy贪婪匹配模式既是这种类型(.*)的最长匹配,如果需要最短匹配则改为(.*?)即是勉强匹配模式。 
  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 (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
