在 Java 正则(java.util.regex) 中,默认就是贪婪模式(greedy),不需要额外写什么关键字。
下面给你一个清晰说明 + 示例。
贪婪模式:
尽可能多地匹配字符,直到整体正则无法继续匹配为止。
Java 中这些量词默认就是贪婪的:
| 量词 | 含义 |
|---|---|
* |
0 次或多次(贪婪) |
+ |
1 次或多次(贪婪) |
? |
0 或 1 次(贪婪) |
{n,m} |
n 到 m 次(贪婪) |
String text = "a123b456b789b";
String regex = "a.*b";
✅ 匹配整个:
a123b456b789b
因为 . 会尽可能多吃字符,直到最后一个 b
在量词后加 ?:
| 贪婪 | 非贪婪 |
|---|---|
* |
*? |
+ |
+? |
? |
?? |
{n,m} |
{n,m}? |
String regex = "a.*?b";
匹配结果(最短匹配):
a123b
import java.util.regex.*;
public class Test {
public static void main(String[] args) {
String text = "a123b456b789b";
// 贪婪
Pattern p1 = Pattern.compile("a.*b");
Matcher m1 = p1.matcher(text);
if (m1.find()) {
System.out.println("贪婪: " + m1.group());
}
// 非贪婪
Pattern p2 = Pattern.compile("a.*?b");
Matcher m2 = p2.matcher(text);
while (m2.find()) {
System.out.println("非贪婪: " + m2.group());
}
}
}
✅ Java 正则默认就是贪婪模式
✅ 想“少匹配一点”才用 ?(懒惰模式)
如果你有具体字符串或业务场景(比如 HTML、JSON、日志解析),可以直接发出来,我帮你写最合适的正则。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。