正则表达式

39 阅读2分钟

一、正则表示

1、概述

正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性。

2、使用方法:

public boolean matches(String regex)判断是否匹配正则表达式,匹配返回true,不匹配返回false。

3、案例展示

需求:检验一个号码是否正确,6到20位之内,必须全部是数字
不用正则表达式时的代码:

public static void main(String[] args) {
    System.out.println(checkQQ("1234567"));
    System.out.println(checkQQ("1234a567"));
}

public static boolean checkQQ(String qq){
    //1、判断qq号码长度是否满足要求
    if (qq == null || qq.length() < 6 || qq.length() > 20){
        return false;
    }

    //2、判断qq号中是否全都是数字,不是返回false
    for (int i = 0; i < qq.length(); i++) {
        //获取每位字符
        char ch = qq.charAt(i);
        //判断这个字符是否不是数字,不是数字返回false
        if (ch < '0' || ch > '9'){
            return false;
        }
    }
    return true;
}

结果为:

image.png
使用正则表达式时:

public static boolean checkQQ(String qq){
    return qq != null && qq.matches("\d{6,20}");
}

4、正则表达式在字符串方法中的使用:

public String replaceAll(String regex,String newStr)按照正则表达式匹配的内容进行替换

public String[] split(String regex)按照正则表达式匹配的内容进行分割字符串,返回一个字符串数组

5、正则表达式爬取信息

示例代码如下:

public static void main(String[] args) {
        String rs = "来学习Java,电话012-43445624,或者联系邮箱" +
                "rtcast@gmail.cn,电话18763456343,01243445624" +
                "邮箱zhengze@gmail.cn,411-122-4444 ,99887003342";

        // 需求:从上面的内容中爬取出 电话号码和邮箱。
        // 1、定义爬取规则,字符串形式
        String regex = "(\\w{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2})|(1[3-9]\\d{9})" +
                "|(0\\d{2,6}-?\\d{5,20})|(400-?\\d{3,9}-?\\d{3,9})";

        // 2、把这个爬取规则编译成匹配对象。
        Pattern pattern = Pattern.compile(regex);

        // 3、得到一个内容匹配器对象
        Matcher matcher = pattern.matcher(rs);

        // 4、开始找了
        while (matcher.find()) {
            String rs1 = matcher.group();
            System.out.println(rs1);
        }

    }