贪婪模式又叫最大匹配,X?、X*、X+、X{n,}都是最大匹配,例如你要用“<.+>”去匹配“a
贪婪模式(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"]
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
以上就是实例解析Java程序中正则表达式的贪婪模式匹配的内容,更多相关内容请关注PHP中文网(www.php.cn)!