彻底搞清楚java正则的两个类Pattern和Matcher

1.直接上代码

@Test
    void contextLoads() {
        String regex = "[0-9][0-9]";//两位数字
        String str = "11我们是22我们是33";
     //1.Pattern类作用
        //1.1调用静态方法matches判断正则跟目标对象是否匹配
        boolean m = Pattern.matches(regex, str);//false
        //1.2初始化正则模板,得到模板对象可以进行多种操作
        Pattern pattern = Pattern.compile(regex);
     //2.模板对象作用
        //2.1用正则模板来分离目标
        String[] split = pattern.split(str);//["","我们是","我们是"]
        //2.2用正则模板来匹配目标,得到匹配对象
        Matcher matcher = pattern.matcher(str);
     //*3.匹配对象的作用
        int i = 2;//三种匹配方案
        switch (i) {
            case 1://matcher.matches();将str看成一个整体用regex配置
                boolean matches1 = matcher.matches();//false,跟1.1作用效果一样
                break;
            case 2://matcher.find();在str中查看所有符合regex的
                /**
                 * 每次find后matcher都会自动获取下一个
                 */
                boolean b0 = matcher.find(); //true
                int start = matcher.start();//0
                int end = matcher.end();//2
                String group0 = matcher.group();//11

                boolean b1 = matcher.find(); //true
                int start1 = matcher.start();//5
                int end1 = matcher.end();//7
                String group1 = matcher.group();//22

                boolean b2 = matcher.find(); //true
                int start2 = matcher.start();//10
                int end2 = matcher.end();//12
                String group2= matcher.group();//33
                /**
                 * 等效于下面代码
                 */
                while (matcher.find()){
                    String group = matcher.group();//11 22 33
                }
                /**
                 * 注意 find(int group)  find(0)从第一个开始遍历   find(n)从第二个开始遍历
                 */
                boolean b3 = matcher.find(1);
                String group3 = matcher.group();//22
                boolean b4 = matcher.find(2);
                String group4 = matcher.group();//22
                boolean b5 = matcher.find(3);
                String group5 = matcher.group();//22
                boolean b = matcher.find(0);
                String group = matcher.group();//11
				 /**
                 * 注意replaceAll()之后不能继续匹配
                 */
                boolean b7 = matcher.find(); //true
                int start7 = matcher.start();//0
                int end7 = matcher.end();//2
                String group07 = matcher.group();//11

                String s = matcher.replaceAll("");//我们是我们是
                boolean b8 = matcher.find(); //false

                break;
            case 3://matcher.lookingAt();在str中从第一位开始匹配regex的
                Boolean aBoolean = matcher.lookingAt();//true
                String group6 = matcher.group();//11
                Boolean aBoolean2 = matcher.lookingAt();//true
                String group7 = matcher.group();//11
                Boolean aBoolean4 = matcher.lookingAt();//true
                String group8 = matcher.group();//11
                break;
        }


    }

2.总结

正则:regex         目标字符串:str
1.如果判断regex是否跟str匹配,直接用:boolean m = Pattern.matches(regex, str);或boolean matches = str.matches(regex);
2.如果要去除或者替换str中多个跟regex配置的字符串:str.replaceAll(regex,"")或者String s1 = Pattern.compile(regex).matcher().replaceAll(str);
3.如果要操作str中多个跟regex配置的字符串:Matcher matcher= Pattern.compile(regex).matcher(str);然后while循环matcher对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值