资讯专栏INFORMATION COLUMN

Java正则的贪婪和非贪婪模式

myeveryheart / 1378人阅读

摘要:定义贪婪模式匹配尽可能多的字符非贪婪模式匹配尽可能少的字符在的正则表达式中,通过在修饰匹配次数的符号后面加一个,即非贪婪模式,默认情况下是贪婪模式。

定义

贪婪模式:匹配尽可能多的字符

非贪婪模式:匹配尽可能少的字符

Java的正则表达式中,通过在修饰匹配次数的符号后面加一个?,即非贪婪模式,默认情况下是贪婪模式。

表示匹配次数的符号有:

.?        # 任意字符匹配1次或0次
.*        # 任意字符匹配0次或多次
.+        # 任意字符匹配1次或多次
.{n}    # 任意字符匹配n次
.{n,}    # 任意字符匹配至少n次
.{n,m}    # 任意字符匹配至少n次,至多m次
代码
public static void main(String[] args) {
        String input = "aaaabc";


        String regex1 = "a{2,3}";               // 贪婪模式
        Pattern p1 = Pattern.compile(regex1);
        Matcher m1 = p1.matcher(input);
        while (m1.find()) {
            System.out.println(m1.group());
        }

        System.out.println("------------------");

        String regex2 = "a{2,3}?";              // 非贪婪模式
        Pattern p2 = Pattern.compile(regex2);
        Matcher m2 = p2.matcher(input);
        while (m2.find()) {
            System.out.println(m2.group());
        }

    }

输出:

aaa
------------------
aa
aa
原文链接

https://segmentfault.com/a/11...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70613.html

相关文章

  • 正则表达式详解

    摘要:学习正则表达式也是如此,循序渐进,方能厚积薄发。概念分组捕获是指将想要匹配的正则表达式用小括号括起来,然后与限定符组合使用,可以连续匹配符合规则的字符串。 正则表达式是一个非常有用的用来匹配验证字符串的工具。很多人觉得正则表达式规则繁多,学了也会忘记,不如等到需要使用的时候再去查阅即可。这样的观点也无可厚非,不过我曾经看到过一个绝妙的关于阅读的比喻,阅读就像是将竹篓浸入到水里面,虽然捞...

    keelii 评论0 收藏0
  • JS基础入门篇(三十三)—正则表达式

    摘要:举例一使用这个正则,打印结果为使用这个正则,打印结果为举例二打印结果如下过滤标签你好美丽的上海想转化成你好,美丽的上海如果后面加,就会进入非贪婪模式。如果后面不加,就会进入贪婪模式,结果为上海。你好美丽的上海。 1.创建一个正则表达式 方法一:使用一个正则表达式字面量,其由包含在斜杠之间的模式组成。 var reg1 = /a/; var reg2 = /ab+c/; 方法二:调用Re...

    caspar 评论0 收藏0
  • JS基础入门篇(三十三)—正则表达式

    摘要:举例一使用这个正则,打印结果为使用这个正则,打印结果为举例二打印结果如下过滤标签你好美丽的上海想转化成你好,美丽的上海如果后面加,就会进入非贪婪模式。如果后面不加,就会进入贪婪模式,结果为上海。你好美丽的上海。 1.创建一个正则表达式 方法一:使用一个正则表达式字面量,其由包含在斜杠之间的模式组成。 var reg1 = /a/; var reg2 = /ab+c/; 方法二:调用Re...

    hot_pot_Leo 评论0 收藏0
  • JS基础入门篇(三十三)—正则表达式

    摘要:举例一使用这个正则,打印结果为使用这个正则,打印结果为举例二打印结果如下过滤标签你好美丽的上海想转化成你好,美丽的上海如果后面加,就会进入非贪婪模式。如果后面不加,就会进入贪婪模式,结果为上海。你好美丽的上海。 1.创建一个正则表达式 方法一:使用一个正则表达式字面量,其由包含在斜杠之间的模式组成。 var reg1 = /a/; var reg2 = /ab+c/; 方法二:调用Re...

    y1chuan 评论0 收藏0
  • 正则表达式详解 js

    摘要:程序员的正则表达式,医生的处方和道士的鬼画符,都是利器。其实,正则表达式是一门语言,有自己独特的语法,还拥有自己的解释器。但是,如果正则表达式是动态的,是根据变量来定义的,那么,只能使用第二种构造函数的方式。 前言 作为一个程序员,要出去装逼,手中必备的技能就是正则表达式。程序员的正则表达式,医生的处方和道士的鬼画符,都是利器。 在js中,很多的场景需要去使用到它(毕竟,js刚刚诞生的...

    fredshare 评论0 收藏0

发表评论

0条评论

myeveryheart

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<