实例解析Java程序中正则表达式的贪婪模式匹配
发布时间:2020-11-18 00:47:13 所属栏目: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 (编辑:台州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |