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

相关推荐
带刺的坐椅5 分钟前
代码审查 Agent Harness 实战:AI 自动 Code Review
java·ai·llm·agent·solon·soloncode·harness
可儿·四系桜6 分钟前
经纬度转北斗网格位置码(非极地区域,编码篇)
java·物联网
唐青枫7 分钟前
Java ActiveMQ 实战指南:从 JMS 队列、主题到 Spring Boot 消息处理
java
Dovis(誓平步青云)8 分钟前
《C/C+++ Boost 轻量级搜索引擎实战:架构流程、技术栈与工程落地指南——HTML文件的清洗(上篇)》
开发语言·数据库·c++·搜索引擎·开源
布朗克16816 分钟前
Go 入门到精通-13-指针与内存
开发语言·c++·golang·指针与内存
码兄科技8 小时前
Java AI智能体开发实战:从零构建智能对话系统指南
java·开发语言·人工智能
折哥的程序人生 · 物流技术专研8 小时前
第8篇:六大设计原则在工厂模式中的体现
java·设计模式·设计原则·工厂模式·编程进阶·扩充系列
小明bishe189 小时前
计算机毕业设计之基于JAVA的植物科普网站
java·spring boot·spring·架构·课程设计
Drone_xjw9 小时前
从 GDB 到 CDB:C/C++ 程序调试的两把“手术刀”
c语言·开发语言·c++