正则表达式

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" +
                        "或者联系邮箱: boniu@itcast.cn\n" +
                        "座机电话:01036517895,010-98951256\n" +
                        "邮箱:bozai@itcast.cn\n" +
                        "邮箱2:dlei0009@163.com\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" +
                "或者联系邮箱: boniu@itcast.cn\n" +
                "座机电话:01036517895,010-98951256\n" +
                "邮箱:bozai@itcast.cn\n" +
                "邮箱2:dlei0009@163.com\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)));
    }
}
相关推荐
Swift社区1 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht1 小时前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht1 小时前
Swift闭包的本质
开发语言·ios·swift
wjs20241 小时前
Swift 数组
开发语言
吾日三省吾码2 小时前
JVM 性能调优
java
stm 学习ing2 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
LNTON羚通3 小时前
摄像机视频分析软件下载LiteAIServer视频智能分析平台玩手机打电话检测算法技术的实现
算法·目标检测·音视频·监控·视频监控
湫ccc3 小时前
《Python基础》之字符串格式化输出
开发语言·python
弗拉唐3 小时前
springBoot,mp,ssm整合案例
java·spring boot·mybatis