正则表达式(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();
            //[email protected]   [email protected]  [email protected]
            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}

相关推荐
香蕉炒肉2 分钟前
Java优化:双重for循环
java·开发语言
傍晚冰川20 分钟前
FreeRTOS任务调度过程vTaskStartScheduler()&任务设计和划分
开发语言·笔记·stm32·单片机·嵌入式硬件·学习
PingdiGuo_guo23 分钟前
C++智能指针的知识!
开发语言·c++
黄雪超23 分钟前
JVM——打开JVM后门的钥匙:反射机制
java·开发语言·jvm
有梦想的攻城狮31 分钟前
spring中的@RabbitListener注解详解
java·后端·spring·rabbitlistener
李斯维33 分钟前
循序渐进 Android Binder(二):传递自定义对象和 AIDL 回调
android·java·android studio
androidwork34 分钟前
OkHttp 3.0源码解析:从设计理念到核心实现
android·java·okhttp·kotlin
程序员岳焱36 分钟前
Java 程序员成长记(二):菜鸟入职之 MyBatis XML「陷阱」
java·后端·程序员
我命由我1234538 分钟前
Spring Boot 项目集成 Redis 问题:RedisTemplate 多余空格问题
java·开发语言·spring boot·redis·后端·java-ee·intellij-idea
面朝大海,春不暖,花不开38 分钟前
Spring Boot消息系统开发指南
java·spring boot·后端