正则表达式

1.体验

1.需求

验证QQ号是否合法,首位不能是0,长度6-20,必须纯数字

2.没有正则表达式

java 复制代码
package cn.hdc.opp6.zhengzebiaodashi;

public class Main1 {
    public static void main(String[] args) {
        System.out.println(checkQQ("2652110187"));
    }

    public static boolean checkQQ(String QQ) {
        if (QQ == null || QQ.charAt(0) == '0' || QQ.length() < 6 || QQ.length() > 20) {
            return false;
        }
        for (int i = 0; i < QQ.length(); i++) {
            if (QQ.charAt(i) < 48 || QQ.charAt(i) > 57) {
                return false;
            }
        }
        return true;
    }
}

3.使用正则表达式

java 复制代码
package cn.hdc.opp6.zhengzebiaodashi;

public class Main1 {
    public static void main(String[] args) {
        System.out.println(checkQQ1("2652110187"));
    }

    public static boolean checkQQ1(String QQ) {
        return QQ != null && QQ.matches("[1-9]\\d{5,19}");
    }
}

2.正则表达式

案例

java 复制代码
package cn.hdc.opp6.ZhengZedemo;

import java.util.Scanner;

public class d1 {
    public static void main(String[] args) {
        checkPhone();
    }

    private static void checkPhone() {
        while (true) {
            System.out.println("请输入你的时间:");
            Scanner sc = new Scanner(System.in);
            String phone = sc.nextLine();
//            if (phone.matches("[0-2]?[0-3]点[0-5]?[0-9]分[0-5]?[0-9]秒")) {
            if (phone.matches("([01]?[0-9]|2[0-3])点([0-5]?[0-9])分([0-5]?[0-9])秒")) {
                System.out.println(true);
//                break;
            } else {
                System.out.println(false);
            }
        }

/*
        while (true) {
            System.out.println("请输入你的邮箱:");
            Scanner sc = new Scanner(System.in);
            String phone = sc.nextLine();
            if (phone.matches("\\w{2,}@[a-zA-Z0-9]{2,20}(\\.\\w{2,10}){1,2}")) {
                System.out.println(true);
                break;
            } else {
                System.out.println(false);
            }
        }
*/
/*
        while (true) {
            System.out.println("请输入你的手机号:");
            Scanner sc = new Scanner(System.in);
            String phone = sc.nextLine();
            if (phone.matches("(1[3-9]\\d{9})|(0\\d{2,7}-?[1-9]\\d{4,19})")) {
                System.out.println(true);
                break;
            } else {
                System.out.println(false);
            }
        }
*/
    }

}

爬取信息

java 复制代码
package cn.hdc.opp6.ZhengZeSelect;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        queryInfo();
    }

    private static void queryInfo() {
        String str =
                "来黑马程序员学习Java\n" +
                        "电话:18512516758,18512508907\n" +
                        "或者联系邮箱: [email protected]\n" +
                        "座机电话:01036517895,010-98951256\n" +
                        "邮箱:[email protected]\n" +
                        "邮箱2:[email protected]\n" +
                        "热线电话:400-618-9090,400-618-4000\n" +
                        "4006184000,4006189090";
        //爬取电话
        String regex =
                "(1[3-9]\\d{9})|" +
                        //爬取邮箱
                        "(\\w{1,}@\\w{2,10}\\.(\\w{2,10}){1,2})|" +
                        //爬取座机号码
                        "010[- ]?\\d{3,8}|" +
                        //爬取热线
                        "400[- ]?\\d{3,8}[- ]?\\d{3,8}";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(str);
        while (m.find()) {
            System.out.println(m.group());
        }

    }
}

搜索、替换内容

java 复制代码
private static void queryUserName() {
        String str = "来黑马程序员学习Java\n" +
                "电话:18512516758,18512508907\n" +
                "或者联系邮箱: [email protected]\n" +
                "座机电话:01036517895,010-98951256\n" +
                "邮箱:[email protected]\n" +
                "邮箱2:[email protected]\n" +
                "热线电话:400-618-9090,400-618-4000\n" +
                "4006184000,4006189090";
        String regex = "\\w{1,}@\\w{2,10}(\\.\\w{2,10}){1,2}";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(str);
        while (m.find()) {
            String res = m.group().split("@")[0];
            System.out.println(res);
        }
    }

java 复制代码
package cn.hdc.opp6.ZhengZeSelect;

import java.util.Arrays;

public class ReplaceAndSplit {
    public static void main(String[] args) {
        //1、public String replaceAll(String regex,String newstr):按照正则表达式匹配的内容进行替换
        // 需求1:请把 古力娜扎ai8888迪丽热巴999aa5566马尔扎哈fbbfsfs42425卡尔扎巴,中间的非中文字符替换成"_"
        String str = "古力娜扎ai8888迪丽热巴999aa5566马尔扎哈fbbfsfs42425卡尔扎巴";
        String regex = "\\w+";
        System.out.println(str.replaceAll(regex, "-"));
        // 需求2(拓展):某语音系统,收到一个口吃的人说的 "我我我喜欢编编编编编编编编编编编编程程程!",需要优化成 "我喜欢编程!"
        String str1 = "我我我喜欢编编编编编编编编编编编编程程程!";
        String reges1 = "(.)\\1+";
        /**
         * (.)代表任意一组,.代表匹配任意字符
         * \\1  :为这个组声明一个组号:1号(一定用\\1,这是规定好的)
         * +    :声明必须是重复的字:一次以上
         * $1   :取到第一组代表的那个重复的字
         */
        System.out.println(str1.replaceAll(reges1, "$1"));
        // 2、public string[] split(String regex):按照正则表达式匹配的内容进行分割字符串,反回一个字符串数组。
        //需求1:请把古力娜扎ai8888迪丽热巴999aa5566马尔扎哈fbbfsfs42425卡尔扎巴,中的人名获取出来。
        String str2 = "古力娜扎ai8888迪丽热巴999aa5566马尔扎哈fbbfsfs42425卡尔扎巴";
        String regex2 = "\\w+";
        System.out.println(Arrays.toString(str2.split(regex2)));
    }
}
相关推荐
美美打不死9 分钟前
webpack js 逆向 --- 个人记录
开发语言·javascript·webpack
等雨季9 分钟前
scala编程语言
开发语言·scala
、BeYourself14 分钟前
Sentinel[超详细讲解]-7 -之 -熔断降级[异常比例阈值]
java·spring cloud·sentinel
可乐加.糖25 分钟前
腾讯云K8s容器部署SpringBoot项目实现方案
java·spring boot·容器·kubernetes·k8s·腾讯云
悄悄敲敲敲28 分钟前
C++第14届蓝桥杯b组学习笔记
c++·学习·算法·蓝桥杯
不断前进的皮卡丘36 分钟前
06-公寓租赁项目-后台管理-公寓管理篇
java·开发语言·数据库·spring boot
luoluoal39 分钟前
Java项目之基于ssm的个性化旅游攻略定制系统(源码+文档)
java·mysql·mybatis·ssm·源码
努力学习的小廉41 分钟前
【C++11(下)】—— 我与C++的不解之缘(三十二)
开发语言·c++
永无魇足1 小时前
JAVASE(十五)正则表达式
java
唐静蕴1 小时前
Kotlin语言的安全开发
开发语言·后端·golang