正则表达式(Java)

一、初步认识

正则表达式是由一些特定的字符组成,代表一个规则,可以用来检验数据格式是否合法,也可以在一段文本中查找满足要求的内容。

如果使用代码检验数据是否正确:

java 复制代码
public class RegexTest1 {
    public static void main(String[] args) {
        //需求:检验QQ号是否正确,全是数字不能以0开头,长度6-20
        System.out.println(checkQQ(null));
        System.out.println(checkQQ("3563gjhg88"));
        System.out.println(checkQQ("764765467"));
    }

    public static boolean checkQQ(String qq){
        //1.判断qq号码是否为null
        if(qq == null || qq.startsWith("0") || qq.length()<6 || qq.length()>20){
            //String提供的一个startWith()方法
            return false;
        }
        //2.判断qq号码中全是数字
        // 比如qq号是2894qqi
        //遍历字符
        for (int i = 0; i < qq.length(); i++) {
            //根据索引提取当前位置处的字符
            char ch = qq.charAt(i);
            //需要判断ch记录的字符,如果不是数字,就不合法,底层比较编号
            if(ch < '0' || ch > '9'){
                return false;
            }
        }
        return true;
    }
}

使用正则表达式:

二、书写规则

String提供了一个匹配正则表达式的方法: 图片来源heimait

\\d才会当成\d使用

(?i)表示忽略大小写

三、应用案例

检验手机号码和邮箱是否正确:

java 复制代码
import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
//        checkPhone();
        checkMail();
    }



public static void checkPhone(){
    while (true) {
        System.out.println("请输入电话号码");
        Scanner sc = new Scanner(System.in);
        String phone = sc.next();
        //17728365549 010-8818339 010293737
        if(phone.matches("(1[3-9]\\d{9})|(0\\d{2,7}-?[1,9]\\d{4,19})")){
            System.out.println("输入的号码没有问题");
            break;
        }else{
            System.out.println("输入的号码有问题,请重新输入号码");
        }
    }

}
    public static void checkMail(){
        while (true) {
            System.out.println("请输入邮箱");
            Scanner sc = new Scanner(System.in);
            String mail = sc.next();
            //1241213254@qq.com   1422341@qq.com  hekiii@iaii.com.cn
            if(mail.matches("\\w{2,}@\\w{2,20}(\\.\\w{2,10}){1,2}")){
                System.out.println("输入的邮箱没有问题");
                break;
            }else{
                System.out.println("输入的邮箱有问题,请重新输入邮箱");
            }
        }

    }



}

查找信息:

1.定义查找规则 String regex = " .... "

2.把正则表达式封装成一个Pattern对象 Pattern pattern = Pattern.compile(regex)

3.通过pattern对象去获取查找内容的匹配器对象 Matcher matcher = pattern.matcher(data)

4.定义一个循环开始爬取信息

while (matcher.find()){String rs = matcher.group(); rs.sout}

相关推荐
c++之路20 小时前
CMake 系列教程(二):基础命令详解
开发语言·c++
阿维的博客日记1 天前
Hippo4j 线程池监控平台部署手册
java·spring boot·后端
南境十里·墨染春水1 天前
C++ 工厂模式:从入门到进阶,彻底掌握对象创建的艺术
开发语言·c++·算法
C+++Python1 天前
详细介绍一下Java泛型的通配符
java·windows·python
JosieBook1 天前
【数据库】时序预测能力的分级进化:TimechoAI如何让每一类用户都能精准预见未来
java·开发语言·数据库
加号31 天前
【C#】 文件与目录管理:创建、删除操作的技术解析
开发语言·c#
diving deep1 天前
脚本速览-python
开发语言·python
一生了无挂1 天前
Java处理JSON技巧教学(从基础到高阶实战全覆盖)
java·开发语言·json
李白的天不白1 天前
使用 SmartAdmin 进行前后端开发
java·前端
swordbob1 天前
Spring 单例 Bean 是线程安全的吗?
java·开发语言