java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java正则匹配

Java正则表达式之全量匹配和部分匹配

作者:成都被卷死的程序员

正则表达式异常强大,一直理解不深,用的也不深,这次项目中尝试,体会到了它的强大之处,这篇文章主要给大家介绍了关于Java正则表达式之全量匹配和部分匹配的相关资料,需要的朋友可以参考下

一,前言

我们在用String.matches()的时候发现字符串中有能匹配的地方却返回为false。如:

        String abc  = "regex.1234561";
        boolean matches = abc.matches("^[a-z]{4}.[0-9]+$");

得到matches为false。但我们在一些在线测试正则匹配中可以看到如下

所以这里我们就需要知道java正则的匹配形式是有区分的。

二,全量匹配

顾名思义,就是指整个字符串必须全部符合你正则表达式才能返回为true。就是我们熟知的String.matches("正则")。

        String abc  = "regex.1234561";
        boolean matches = abc.matches("^[a-z]{5}.[0-9]+$");
        // 输出该结果为true
        System.out.println(matches);

三,部分匹配

相对于全量匹配,我们只提取字符串中符合正则的部分。java中当然也有此类方法。方法如下:

        String abc  = "regex.1234561";
        Pattern pattern = Pattern.compile("[a-z]{4}.[0-9]+");
        Matcher matcher = pattern.matcher(abc);
        while (matcher.find()) {
            // 得到符合的匹配egex.1234561
            System.out.println(matcher.group());
        }

四,补充

我们常用的String.replaceAll(regex, replaceStr);中其实也是用的是部分匹配进行的替换

        String abc  = "regex.1234561";
        String all = abc.replaceAll("[0-9]{3}", "****");
        // 输出结果为regex.********1
        System.out.println(all);

总结

到此这篇关于Java正则表达式之全量匹配和部分匹配的文章就介绍到这了,更多相关Java正则匹配内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文