正则表达式(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}

相关推荐
Java后端的Ai之路8 小时前
RAG 还是 Agent 自主检索?Claude Code 删掉向量库之后,我把选型讲透了
开发语言·人工智能·prompt·agent·rag
starzy19908 小时前
深入理解Scala高阶函数:函数式编程核心
开发语言·scala
2601_9621066413 小时前
【Java Set综合实战】商品管理系统 + 图书收藏系统|Product、Book自定义类全套代码
java
RuoyiOffice14 小时前
SpringBoot+Vue3 凭证生命周期设计:审核、过账、冲销与反过账怎样保持账目一致
java·spring boot·事务·springboot3·财务系统·会计凭证·ruoyi office
2601_9621066414 小时前
HashMap入门|工号-姓名键值存储、两种遍历方式、根据key/value查
java
czq_268671948714 小时前
Python打卡第46天
开发语言·python
杨凯凡15 小时前
Spring Framework 7 API 版本管理实战:请求头路由、兼容迁移与废弃策略
java·rest api·springframework·spring boot 4·api版本管理
T_Wizard15 小时前
同一个问题写了 4 遍:官方 SDK / HTTP / Spring AI / LangChain4j,到底该选哪个
java·ai编程
hai_android15 小时前
AudioTrack 深度解析:从原理到实战
android·java·kotlin
斯维赤16 小时前
限流、熔断、降级,你真的分得清吗?
java·后端·架构