java 正则表达式贪婪与懒惰

63 篇文章 0 订阅

java如何运行正则?

  1. String自带的matches()方法验证。但这种验证是调用了Pattern的matches方法。
 public boolean matches(String regex) {
        return Pattern.matches(regex, this);//底层源码
    }
  1. 编译正则表达式
 public static void main(String[] args) {
       String str="efsefsef2@2@2222";
       //?<! 匹配\\w+前面跟的不是\\d的内容
       String reg="(?<!\\d)\\w+";
        Pattern pattern=Pattern.compile(reg);//先编译正则
         //再把字符串加入到matcher对象
        Matcher matcher=pattern.matcher(str);
        //开始局部匹配遇到第一个符合条件的就停止匹配
        matcher.find();
        System.out.println(matcher.group());
    }

运行结果:
在这里插入图片描述贪婪与懒惰

  1. 当我们不对*,+,?做处理时他就是贪婪的每次匹配都偏向于多的一方。
 public static void main(String[] args) {
       String str="efsefsef2@2@2222";
        String reg="\\w+";   //\w 字母数字下划线  ?<=  ?!  ?:

        Pattern pattern=Pattern.compile(reg);

        Matcher matcher=pattern.matcher(str);

        matcher.find();

        System.out.println(matcher.group());
    }

结果:
在这里插入图片描述

  1. 当我们想让他懒惰时,让他偏向少的一方可以在后面加上?来让我们试下。
 public static void main(String[] args) {
       String str="efsefsef2@2@2222";
        String reg="\\w+?";   //\w 字母数字下划线  ?<=  ?!  ?:

        Pattern pattern=Pattern.compile(reg);

        Matcher matcher=pattern.matcher(str);

        matcher.find();

        System.out.println(matcher.group());
    }

结果:
在这里插入图片描述

  public static void main(String[] args) {
       String str="efsefsef2@2@2222";
        String reg="\\w*?";   //\w 字母数字下划线  ?<=  ?!  ?:

        Pattern pattern=Pattern.compile(reg);

        Matcher matcher=pattern.matcher(str);

        matcher.find();

        System.out.println(matcher.group());
    }

结果:
在这里插入图片描述
同理其他只要加上?就会变得懒惰。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值