正则表达式(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 小时前
VS C++ 配置OPENCV环境
开发语言·c++·opencv
陈平安Java and C5 小时前
MyBatisPlus
java
秋野酱5 小时前
如何在 Spring Boot 中实现自定义属性
java·数据库·spring boot
Bunny02126 小时前
SpringMVC笔记
java·redis·笔记
BinaryBardC6 小时前
Swift语言的网络编程
开发语言·后端·golang
feng_blog66886 小时前
【docker-1】快速入门docker
java·docker·eureka
code_shenbing6 小时前
基于 WPF 平台使用纯 C# 制作流体动画
开发语言·c#·wpf
邓熙榆6 小时前
Haskell语言的正则表达式
开发语言·后端·golang
ac-er88887 小时前
Yii框架中的队列:如何实现异步操作
android·开发语言·php
马船长7 小时前
青少年CTF练习平台 PHP的后门
开发语言·php