站长资源网络编程

Java 正则表达式匹配模式(贪婪型、勉强型、占有型)

整理:jimmy2026/7/30浏览2
简介Greediness(贪婪型):最大匹配X、X*、X+、X{n,} 是最大匹配。例如你要用 “<.+>” 去匹配 “aaava abb”,也许你所期待的结果是想匹配 “”,但是实际结果却会匹配到 “aava 。在 Greediness 的模式下,会尽量

Greediness(贪婪型):最大匹配

X"htmlcode">

String test = "a<tr>aava </tr>abb ";
String reg = "<.+>";
System.out.println(test.replaceAll(reg, "###"));

输出:a###abb

Reluctant(Laziness)(勉强型):最小匹配
X"htmlcode">

String test = "a<tr>aava </tr>abb ";
String reg = "<.+";
System.out.println(test.replaceAll(reg, "###"));

输出:a###aava ###abb

与 Greediness 不同,Reluctant 模式下匹配了两次内容

Possessive(占有型):完全匹配
X"htmlcode">

String test = "a<tr>aava </tr>abb ";
String reg = "<.++>";
String test2 = "<tr>";
String reg2 = "<tr>";
System.out.println(test.replaceAll(reg, "###"));
System.out.println(test2.replaceAll(reg2, "###"));

输出:a<tr>aava </tr>abb