温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java regex怎么写贪婪模式

发布时间:2026-10-04 20:08:11 来源:亿速云 阅读:94 作者:小樊 栏目:编程语言

在 Java 正则(java.util.regex) 中,默认就是贪婪模式(greedy),不需要额外写什么关键字。

下面给你一个清晰说明 + 示例。


1️⃣ 什么是贪婪模式(Greedy)

贪婪模式:

尽可能多地匹配字符,直到整体正则无法继续匹配为止。

Java 中这些量词默认就是贪婪的:

量词 含义
* 0 次或多次(贪婪)
+ 1 次或多次(贪婪)
? 0 或 1 次(贪婪)
{n,m} n 到 m 次(贪婪)

2️⃣ 贪婪模式示例

示例字符串

String text = "a123b456b789b";

贪婪正则

String regex = "a.*b";

匹配结果

✅ 匹配整个:

a123b456b789b

因为 . 会尽可能多吃字符,直到最后一个 b


3️⃣ 对比:非贪婪(懒惰)模式

在量词后加 ?:

贪婪 非贪婪
* *?
+ +?
? ??
{n,m} {n,m}?

非贪婪示例

String regex = "a.*?b";

匹配结果(最短匹配):

a123b

4️⃣ Java 代码示例

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());
        }
    }
}

5️⃣ 总结一句话

✅ Java 正则默认就是贪婪模式
✅ 想“少匹配一点”才用 ?(懒惰模式)

如果你有具体字符串或业务场景(比如 HTML、JSON、日志解析),可以直接发出来,我帮你写最合适的正则。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手