正则表达式

匹配符号

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

public class regExp {

    //基本匹配符
    @Test
    public void Test(){
        String content="a1_1c8.A     B@ C";

        String reg1="[a-z]"; //a-z任意一个字符
        String reg2="(?i)abc"; //不区分大小写
        String reg3="[0-9]"; //0-9任意一个数字
        String reg4="[^a-z]"; //不包含a-z
        String reg5="[^0-9]"; //不包含0-9
        String reg6="[abcd]"; //abcd中任意一个字符
        String reg7="[abcd]"; //abcd中任意一个字符
        String reg8="\\D"; //非数字任意一个字符
        String reg9="\\w"; //数字 字母 下划线
        String reg10="\\W"; //非数字 字母 下划线
        String reg11="\\s"; //空格 制表符
        String reg12="."; //除\n之外所有
        String reg13="\\."; //匹配.

        Pattern pattern=Pattern.compile(reg13,Pattern.CASE_INSENSITIVE); //匹配不区分大小写
        Matcher matcher = pattern.matcher(content);
        while(matcher.find()){
            System.out.println("找到:"+matcher.group(0));
        }
    }

    //选择匹配符
    @Test
    public void Test00(){
        String content="hanshunping 韩 含";
        String regString="han|韩|含";
        Pattern pattern=Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        while(matcher.find()){
            System.out.println("找到:"+matcher.group(0));
        }
    }

    //限定匹配
    @Test
    public void Test01(){
        String content="111111aaaa";
        //1{}
        String regString1="1{1,5}"; //匹配1的个数[1,5]
        //1+
        String regString2="1+"; //匹配多个1
        //1*
        String regString3="1*"; //匹配0个或者多个1
        //1?
        String regString4="1a?"; //匹配1a或者1

        Pattern pattern=Pattern.compile(regString1);
        Matcher matcher = pattern.matcher(content);
        while(matcher.find()){
            System.out.println("找到:"+matcher.group(0));
        }
    }

    //定位符
    @Test
    public void Test02(){
        String content="1234abcd";
        //以数字开头,后面接任意个字母
        String regString1="^[0-9]+[a-z]*";

        //以数字开头,小写字母结尾
        String regString2="^[0-9]+[a-z]+$";

        Pattern pattern=Pattern.compile(regString1);
        Matcher matcher = pattern.matcher(content);
        while(matcher.find()){
            System.out.println("找到:"+matcher.group(0));
        }
    }

    //分组
    @Test
    public void Test03(){
        String content="1234abcd5678";
        //组名g1 g2
        String regString="(?<g1>\\d{2})(?<g2>\\d{2})";

        Pattern pattern=Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        while(matcher.find()){
            System.out.println("找到:"+matcher.group(0));
            System.out.println("找到第一组:"+matcher.group("g1"));
            System.out.println("找到第二组:"+matcher.group("g2"));
        }
    }

    //非捕获分组
    @Test
    public void Test04(){
        String content="韩顺平教育 韩顺平同学 韩顺平hello";

        String regString="韩顺平(?:教育|同学|hello)";
        String regString2="韩顺平(?=教育|同学)";
        String regString3="韩顺平(?!教育|同学)";

        Pattern pattern=Pattern.compile(regString3);
        Matcher matcher = pattern.matcher(content);
        while(matcher.find()){
            System.out.println("找到:"+matcher.group(0));
        }
    }
}

应用实例

public class Use {
    @Test
    public void Test(){
        //汉字
        String content1="韩顺平教育";
        String regString1="^[\u0391-\uffe5]+$";

        //邮政编码 6位数字
        String content2="666666";
        String regString2="^[1-9]\\d{5}$";

        //qq 数字开头,5位到10位数
        String content3="666666";
        String regString3="^[1-9]\\d{4,9}$";

        //手机号码 以13 14 15 18 开头的11位数
        String content="13245678910";
        String regString="^1[3|4|5|8]\\d{9}$";


        Pattern pattern=Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        if(matcher.find()){
            System.out.println("满足格式");
        }else{
            System.out.println("不满足格式");
        }
        System.out.println(Pattern.matches(regString,content));
    }

    @Test
    public void TestURL(){
        String content="https://www.bilibili.com/video/BV1fh411y7R8/?p=894&spm_id_from=pageDriver&vd_source=0ca742e7be3fc6c5285297c3a62db52f";
        /**
         *1.匹配 https://
         * ^((http|https)://)
         *
         * 2.匹配 www.bilibili.com
         * ([\w-]+\.)+[\w-]+$
         *
         * 3.匹配 /video/BV1fh411y7R8/?p=894&spm_id_from=pageDriver&vd_source=0ca742e7be3fc6c5285297c3a62db52f
         * [\w-]+(\/[\w-?=&/%.]*)?$
        */
        String regString="^((http|https)://)([\\w-]+\\.)+[\\w-]+(\\/[\\w-?=&/%.]*)?$";
        Pattern pattern=Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        if(matcher.find()){
            System.out.println("满足格式");
        }else{
            System.out.println("不满足格式");
        }
        //整体匹配
        System.out.println(Pattern.matches(regString,content));
    }

    //替换
    @Test
    public void replace(){
        String content="hspedukjfahspedujefj;16551";
        String regString="hspedu";
        Pattern pattern = Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        String newContent = matcher.replaceAll("韩顺平教育");
        System.out.println(newContent);
    }

    //反向引用
    @Test
    public void quoteReverse(){
        String content="1221456666689412321-111222333 ";
        //连续两个数字相同
        String regString1="(\\d)\\1";
        //连续5个相同数字 反向引用4次
        String regString2="(\\d)\\1{4}";
        //回文4位数
        String regString3="(\\d)(\\d)\\2\\1";
        //12321-111222333
        String regString4="\\d{5}-(\\d)\\1{2}(\\d)\\2{2}(\\d)\\3{2}";

        Pattern pattern = Pattern.compile(regString4);
        Matcher matcher = pattern.matcher(content);
        while(matcher.find()){
            System.out.println("找到:"+matcher.group(0));
        }
    }

    //结巴去重
    @Test
    public void removeMulti(){
        String content="我..我...要学学学学...Java!";
        String regString="\\.";
        Pattern pattern = Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        //1.将.替换为""
        content= matcher.replaceAll("");
        //2.找到重复的
        regString="(.)\\1+";
        pattern=Pattern.compile(regString);
        matcher=pattern.matcher(content);
        //3.使用反向引用替换掉所有重复的
        content=matcher.replaceAll("$1");
        System.out.println("去重后:"+content);

        //一句话的事儿
        content = Pattern.compile("(.)\\1+").matcher(content).replaceAll("$1");
        System.out.println(content);
    }

    //String类方法
    @Test
    public void String_method(){
        //替换
        String content="JDK1.3 JDK1.4";
        content = content.replaceAll("JDK1\\.3|JDK1\\.4", "JDK");
        System.out.println(content);
        //匹配
        String content2="13812345678";
        if(content2.matches("1(36|38|39)\\d{8}")){
            System.out.println("验证成功");
        }else{
            System.out.println("验证失败");
        }
        //分割
        String conten3="123456#fjjfd_iso].";
        String[] splits = conten3.split("#|//.|_");
        for(String s:splits){
            System.out.println(s);
        }

    }
    //邮箱验证
    @Test
    public void TestMail(){
        String content="hsp@souhu.com";
        String regString="^[\\w]+@(([\\w]+)\\.)+[\\w]+$";
        Pattern pattern = Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        if(matcher.find()){
            System.out.println("匹配成功");
        }else{
            System.out.println("匹配失败");
        }
    }

    //数字验证
    @Test
    public void TestNumber(){
        String content="-0.123";
        String regStr="^[-+]?([1-9]\\d*|0)(\\.\\d+)?$";
        if(content.matches(regStr)){
            System.out.println("匹配成功");
        }else{
            System.out.println("匹配失败");
        }
    }

    //解析URL
    @Test
    public void explainURL(){
        String content="http://www.souhu.com:8080/abc/index.htm";
        String regStr="^([a-zA-Z]+)://([a-z.]+):(\\d+)[\\w-/]*/([\\w.]+)$";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        if(matcher.find()){
            System.out.println("匹配成功"+matcher.group(0));
            System.out.println("协议:"+matcher.group(1));
            System.out.println("域名:"+matcher.group(2));
            System.out.println("端口:"+matcher.group(3));
            System.out.println("文件名:"+matcher.group(4));
        }else{
            System.out.println("匹配失败");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值