java之正则表达式

1, 

public class demo2 {
    public static void main(String[] args) {
        /*
            需求
            请编写正则表达式验证用户输入的手机号码是否满足要求。请编写正则表达式验证用户输入的邮箱号是否满足要求。请编写正则表达式验证用户输入的电话号码是否满足要求。
            验证手机号码 13112345678 13712345667 13945679027 139456790271
            验证座机电话号码 020-2324242 02122442 027-42424 0712-3242434
            验证邮箱号码 3232323@qq.com zhangsan@itcast.cnn dlei0009@163.com dlei0009@pci.com.cn
         */
        String regex1 = "1[3-9]\\d{9}";
        System.out.println("13112345678".matches(regex1));
        System.out.println("----------------------");
        String regex2 = "0\\d{2,3}-?[1-9]\\d{4,9}";
        System.out.println("020-2324242".matches(regex2));
        System.out.println("----------------------");
        String regex3 = "\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";
        System.out.println("3232323@qq.com".matches(regex3));
        //
        String regex4 = "([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";
        System.out.println("23:11:11".matches(regex4));
        //
        System.out.println("----------------------------");
        //身份证号码匹配
        String regex5 = "([1-9][0-9]{16})([0-9]|x|X)";
        System.out.println("41080119930228457x".matches(regex5));
        String regex6 = "[1-9]\\d{5}(?:18|19|20)\\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\\d|30|31)\\d{3}[\\dXx]";//插件any-rule生成
        System.out.println("41080119930228457x".matches(regex6 ));



    }
}

 

 2,

public class demo2 {
    public static void main(String[] args) {
//        /*
//            需求
//            请编写正则表达式验证用户输入的手机号码是否满足要求。请编写正则表达式验证用户输入的邮箱号是否满足要求。请编写正则表达式验证用户输入的电话号码是否满足要求。
//            验证手机号码 13112345678 13712345667 13945679027 139456790271
//            验证座机电话号码 020-2324242 02122442 027-42424 0712-3242434
//            验证邮箱号码 3232323@qq.com zhangsan@itcast.cnn dlei0009@163.com dlei0009@pci.com.cn
//         */
//        String regex1 = "1[3-9]\\d{9}";
//        System.out.println("13112345678".matches(regex1));
//        System.out.println("----------------------");
//        String regex2 = "0\\d{2,3}-?[1-9]\\d{4,9}";
//        System.out.println("020-2324242".matches(regex2));
//        System.out.println("----------------------");
//        String regex3 = "\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";
//        System.out.println("3232323@qq.com".matches(regex3));
//        //
//        String regex4 = "([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";
//        System.out.println("23:11:11".matches(regex4));
//        //
//        System.out.println("----------------------------");
//        //身份证号码匹配
//        String regex5 = "([1-9][0-9]{16})([0-9]|x|X)";
//        System.out.println("41080119930228457x".matches(regex5));
//        String regex6 = "[1-9]\\d{5}(?:18|19|20)\\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\\d|30|31)\\d{3}[\\dXx]";//插件any-rule生成
//        System.out.println("41080119930228457x".matches(regex6 ));

        //爬虫
        /* 有如下文本,请按照要求爬取数据。
                Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,
                因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台
                要求:找出里面所有的JavaXX
         */
//        String str = "Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,\n" +
//                "                因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";
//        String regex7 = "Java[0-9]{0,2}";//正则表达式
//        Pattern p = Pattern.compile(regex7);//获取正则表达式的对象
//        Matcher m =p.matcher(str);//获取文本匹配器的对象
//        while (m.find())//循环获取、m.group()
//        {
//            String s = m.group();
//            System.out.println(s);
//        }
         /*
            有如下文本,按要求爬取数据。
                Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,
                因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台


            需求1:爬取版本号为8,11.17的Java文本,但是只要Java,不显示版本号。
            需求2:爬取版本号为8,11,17的Java文本。正确爬取结果为:Java8 Java11 Java17 Java17
            需求3:爬取除了版本号为8,11.17的Java文本,
        */
   //     String st = "  java自从95年问世以来,经历了很多版本,目前企业中用的最多的是java8和Java11,\n" +
        //            "                因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台\n";
        //需求1:爬取版本号为8,11.17的Java文本,但是只要Java,不显示版本号。
        //1.定义正则表达式
        //?理解为前面的数据Java
        //=表示在Java后面要跟随的数据
        //但是在获取的时候,只获取前半部分
//        String regex7 = "Java(?=8|11|17)";
//        Pattern p = Pattern.compile(regex7);
//        Matcher m = p.matcher(str);
//        while(m.find())
//        {
//            String s = m.group();
//            System.out.println(s);
//        }
        // 需求2:爬取版本号为8,11,17的Java文本。正确爬取结果为:Java8 Java11 Java17 Java17
//        String regex8 = "((?i)Java)(8|11|17)";
//        Pattern p = Pattern.compile(regex8);
//         Matcher m = p.matcher(st);
//        while(m.find())
//        {
//            String s = m.group();
//            System.out.println(s);
//        }
        // 需求3:爬取除了版本号为8,11.17的Java文本,
//        String regex9 = "((?i)java)(?!8|11|17)";//感叹号表示不等于
//        Pattern p = Pattern.compile(regex9);
//        Matcher m = p.matcher(st);
//        while(m.find())
//        {
//            String s = m.group();
//            System.out.println(s);
//        }
        /*
            有一段字符串:小诗诗dqwefqwfqwfwq12312小丹丹dqwefqwfqwfwq12312小惠惠
            要求1:把字符串中三个姓名之间的字母替换为vs
            要求2:把字符串中的三个姓名切割出来*/
        String s = "小诗诗dqwefqwfqwfwq12312小丹丹dqwefqwfqwfwq12312小惠惠";
        String regex = "[\\w&&[^_]]+";
        //细节:
        //方法在底层跟之前一样也会创建文本解析器的对象
        //然后从头开始去读取字符串中的内容,只要有满足的,那么就用第一个参数去替换。
        String r = s.replaceAll(regex,"vs");
        System.out.println(r);
        String [] a = s.split(regex);
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }


    }
}

3, 

public class demo3 {
    public static void main(String[] args) {
        //需求1:判断一个字符串的开始字符和结束字符是否一致?只考虑一个字符
        //举例: a123a b456b 17891 &abc& a123b(false)
        // \\组号:表示把第X组的内容再出来用一次
        //另外,从左括号开始数,第一左括号是第一组,第二个左括号是第二组。......
        String regex1 = "(.).+\\1";
        System.out.println("a123a".matches(regex1));

    }
}

4,

public class demo3 {
    public static void main(String[] args) {
      
         //需求2:判断一个字符串的开始部分和结束部分是否一致?可以有多个字符
        //举例: abc123abc b456b 123789123 &!@abc&!@ abc123abd(false)
        String regex2 = "(.+).+\\1";
        System.out.println("abc123abc".matches(regex2));
        
    }
}

5,

public class demo3 {
    public static void main(String[] args) {
      
        //需求3:判断一个字符串的开始部分和结束部分是否一致?开始部分内部每个字符也需要一致
        //举例: aaa123aaa bbb456bbb 111789111 &&abc&&
        //(.):把首字母看做一组
        // \\2:把首字母拿出来再次使用
        // *:作用于\\2,表示后面重复的内容出现日次或多次
        String regex3 = "((.)\\2).+\\1";
        System.out.println("aaa123aaa".matches(regex3 ));

    }
}

6, 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值