Java正则表达式 韩顺平 跟学

为什么要学习正则表达式

为什么要学习正则表达式

package com.regexp;

import org.junit.Test;

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

/**
 * 体验正则表达式的威力
 *
 * @author wty
 * @date 2022/11/10 11:22
 */
@SuppressWarnings({"all"})
public class RegexpExperience {
    // 假定,编写了爬虫,从百度获得如下文本
    private String content = "1995年,互联网的蓬勃发展给了Oak机会。业界为了使死板、" +
            "单调的静态网页能够“灵活”起来,急需一种软件技术来开发一种程序," +
            "这种程序可以通过网络传播并且能够跨平台运行。于是,世界各大IT企业为" +
            "此纷纷投入了大量的人力、物力和财力。这个时候,Sun公司想起了那个被搁" +
            "置起来很久的Oak,并且重新审视了那个用软件编写的试验平台,由于它是按" +
            "照嵌入式系统硬件平台体系结构进行编写的,所以非常小,特别适用于网络上的传输系统," +
            "而Oak也是一种精简的语言,程序非常小,适合在网络上传输。" +
            "Sun公司首先推出了可以嵌入网页并且可以随同网页在网络上" +
            "传输的Applet(Applet是一种将小程序嵌入到网页中进行执行的技术)," +
            "并将Oak更名为Java。5月23日,Sun公司在Sun world会议上正式发布Java和" +
            "HotJava浏览器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微软等" +
            "各大公司都纷纷停止了自己的相关开发项目,竞相购买了Java使用许可证," +
            "并为自己的产品开发了相应的Java平台。";

    /**
     * 提取文章中所有英文单词
     *
     * @param
     * @return void
     * @date 2022/11/10 11:33
     * @author wty
     **/
    @Test
    public void getRegexpExperienceEnglishWords(){


        // 传统方法是:遍历,代码量大,效率不高

        // 正则表达式技术
        // 1.创建一个Pattern对象,模式对象  可以理解为一个正则表达式对象
        Pattern pattern = Pattern.compile("[a-zA-z]+");

        //2.创建一个匹配器对象
        // 理解: 就是matcher匹配器按照样式pattern到content中匹配
        // 找到就返回true 否则返回false
        Matcher matcher = pattern.matcher(content);

        // 3.可以开始循环匹配
        while (matcher.find()) {
            // 匹配到内容,文本,放到m.group(0)
            System.out.println("找到;"+matcher.group(0));
        }

    }
    /**
     * 提取文章中所有的数字
     *
     * @param
     * @return void
     * @date 2022/11/10 11:33
     * @author wty
     **/
    @Test
    public void getRegexpExperienceNums(){

        // 传统方法是:遍历,代码量大,效率不高

        // 正则表达式技术
        // 1.创建一个Pattern对象,模式对象  可以理解为一个正则表达式对象
        Pattern pattern = Pattern.compile("[0-9]+");

        //2.创建一个匹配器对象
        // 理解: 就是matcher匹配器按照样式pattern到content中匹配
        // 找到就返回true 否则返回false
        Matcher matcher = pattern.matcher(content);

        // 3.可以开始循环匹配
        while (matcher.find()) {
            // 匹配到内容,文本,放到m.group(0)
            System.out.println("找到;"+matcher.group(0));
        }

    }

    /**
     * 提取文章中所有的英文单词和数字
     *
     * @param
     * @return void
     * @date 2022/11/10 11:33
     * @author wty
     **/
    @Test
    public void getRegexpExperienceEnglishWordsAndNums(){

        // 传统方法是:遍历,代码量大,效率不高

        // 正则表达式技术
        // 1.创建一个Pattern对象,模式对象  可以理解为一个正则表达式对象
        Pattern pattern = Pattern.compile("([0-9]+)|([a-zA-Z]+)");

        //2.创建一个匹配器对象
        // 理解: 就是matcher匹配器按照样式pattern到content中匹配
        // 找到就返回true 否则返回false
        Matcher matcher = pattern.matcher(content);

        // 3.可以开始循环匹配
        while (matcher.find()) {
            // 匹配到内容,文本,放到m.group(0)
            System.out.println("找到;"+matcher.group(0));
        }

    }

    /**
     * 提取百度热榜标题
     *
     * @param
     * @return void
     * @date 2022/11/10 11:33
     * @author wty
     **/
    @Test
    public void getRegexpExperienceTitle(){

        // 传统方法是:遍历,代码量大,效率不高
        content = "<div class=\"cr-content new-pmd\"><!--s-data:{\"sourcetype\":\"FYB_RD\",\"bdlistTitle\":\"百度热搜\",\"refresh\":\"换一换\",\"hotTagsClass\":[\"\",\"c-text-new\",\"c-text-business\",\"c-text-hot\",\"c-text-fei\",\"c-text-bao\"],\"hotTagsText\":[\"\",\"新\",\"商\",\"热\",\"沸\",\"爆\"],\"bdlistGroup\":[[{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"共建网络世界共创数字未来\",\"index\":0,\"hotTags\":0,\"content\":\"共建网络世界共创数字未来\",\"isTop\":true,\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E5%85%B1%E5%BB%BA%E7%BD%91%E7%BB%9C%E4%B8%96%E7%95%8C%E5%85%B1%E5%88%9B%E6%95%B0%E5%AD%97%E6%9C%AA%E6%9D%A5&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=de6dPuvW5mz2EM13SdQh5i%2B8WN79ZL%2BBwT3RFuUPb90XNvwhuRkZvjobopmpfsORF9GF&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_1&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"31省份昨新增本土1133+7691\",\"index\":1,\"hotTags\":3,\"content\":\"31省份昨新增本土1133+7691\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=31%E7%9C%81%E4%BB%BD%E6%98%A8%E6%96%B0%E5%A2%9E%E6%9C%AC%E5%9C%9F1133%2B7691&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_2&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"广州连续3天新增超2000例\",\"index\":2,\"hotTags\":3,\"content\":\"广州连续3天新增超2000例\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E5%B9%BF%E5%B7%9E%E8%BF%9E%E7%BB%AD3%E5%A4%A9%E6%96%B0%E5%A2%9E%E8%B6%852000%E4%BE%8B&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_3&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"在诗画江南看见数字未来\",\"index\":3,\"hotTags\":0,\"content\":\"在诗画江南看见数字未来\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E5%9C%A8%E8%AF%97%E7%94%BB%E6%B1%9F%E5%8D%97%E7%9C%8B%E8%A7%81%E6%95%B0%E5%AD%97%E6%9C%AA%E6%9D%A5&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_4&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"南京一动物园直播筹款:揭不开锅了\",\"index\":4,\"hotTags\":0,\"content\":\"南京一动物园直播筹款:揭不开锅了\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E5%8D%97%E4%BA%AC%E4%B8%80%E5%8A%A8%E7%89%A9%E5%9B%AD%E7%9B%B4%E6%92%AD%E7%AD%B9%E6%AC%BE%EF%BC%9A%E6%8F%AD%E4%B8%8D%E5%BC%80%E9%94%85%E4%BA%86&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_5&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"男子带儿子体验烤红薯引发火灾\",\"index\":5,\"hotTags\":0,\"content\":\"男子带儿子体验烤红薯引发火灾\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E7%94%B7%E5%AD%90%E5%B8%A6%E5%84%BF%E5%AD%90%E4%BD%93%E9%AA%8C%E7%83%A4%E7%BA%A2%E8%96%AF%E5%BC%95%E5%8F%91%E7%81%AB%E7%81%BE&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_6&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"盘点疯狂小杨哥商业版图\",\"index\":6,\"hotTags\":0,\"content\":\"盘点疯狂小杨哥商业版图\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E7%9B%98%E7%82%B9%E7%96%AF%E7%8B%82%E5%B0%8F%E6%9D%A8%E5%93%A5%E5%95%86%E4%B8%9A%E7%89%88%E5%9B%BE&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_7&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"中国VT-4A1主战坦克首现中国航展\",\"index\":7,\"hotTags\":0,\"content\":\"中国VT-4A1主战坦克首现中国航展\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E4%B8%AD%E5%9B%BDVT-4A1%E4%B8%BB%E6%88%98%E5%9D%A6%E5%85%8B%E9%A6%96%E7%8E%B0%E4%B8%AD%E5%9B%BD%E8%88%AA%E5%B1%95&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_8&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"福布斯发布2022中国内地富豪榜\",\"index\":8,\"hotTags\":0,\"content\":\"福布斯发布2022中国内地富豪榜\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E7%A6%8F%E5%B8%83%E6%96%AF%E5%8F%91%E5%B8%832022%E4%B8%AD%E5%9B%BD%E5%86%85%E5%9C%B0%E5%AF%8C%E8%B1%AA%E6%A6%9C&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_9&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"示威男子当街朝英国国王扔鸡蛋\",\"index\":9,\"hotTags\":0,\"content\":\"示威男子当街朝英国国王扔鸡蛋\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E7%A4%BA%E5%A8%81%E7%94%B7%E5%AD%90%E5%BD%93%E8%A1%97%E6%9C%9D%E8%8B%B1%E5%9B%BD%E5%9B%BD%E7%8E%8B%E6%89%94%E9%B8%A1%E8%9B%8B&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_10&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"乌克兰宣布夺回赫尔松州两个定居点\",\"index\":10,\"hotTags\":0,\"content\":\"乌克兰宣布夺回赫尔松州两个定居点\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E4%B9%8C%E5%85%8B%E5%85%B0%E5%AE%A3%E5%B8%83%E5%A4%BA%E5%9B%9E%E8%B5%AB%E5%B0%94%E6%9D%BE%E5%B7%9E%E4%B8%A4%E4%B8%AA%E5%AE%9A%E5%B1%85%E7%82%B9&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_11&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"男子掌掴男童被刑拘 疑亲属下跪致歉\",\"index\":11,\"hotTags\":0,\"content\":\"男子掌掴男童被刑拘 疑亲属下跪致歉\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E7%94%B7%E5%AD%90%E6%8E%8C%E6%8E%B4%E7%94%B7%E7%AB%A5%E8%A2%AB%E5%88%91%E6%8B%98%20%E7%96%91%E4%BA%B2%E5%B1%9E%E4%B8%8B%E8%B7%AA%E8%87%B4%E6%AD%89&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_12&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"赌徒跳河露光头被警方无人机发现\",\"index\":12,\"hotTags\":0,\"content\":\"赌徒跳河露光头被警方无人机发现\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E8%B5%8C%E5%BE%92%E8%B7%B3%E6%B2%B3%E9%9C%B2%E5%85%89%E5%A4%B4%E8%A2%AB%E8%AD%A6%E6%96%B9%E6%97%A0%E4%BA%BA%E6%9C%BA%E5%8F%91%E7%8E%B0&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_13&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"媒体:“招弟”改名不该障碍重重\",\"index\":13,\"hotTags\":0,\"content\":\"媒体:“招弟”改名不该障碍重重\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E5%AA%92%E4%BD%93%EF%BC%9A%E2%80%9C%E6%8B%9B%E5%BC%9F%E2%80%9D%E6%94%B9%E5%90%8D%E4%B8%8D%E8%AF%A5%E9%9A%9C%E7%A2%8D%E9%87%8D%E9%87%8D&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_14&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"老人住自己房子每月交6300元房租\",\"index\":14,\"hotTags\":0,\"content\":\"老人住自己房子每月交6300元房租\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E8%80%81%E4%BA%BA%E4%BD%8F%E8%87%AA%E5%B7%B1%E6%88%BF%E5%AD%90%E6%AF%8F%E6%9C%88%E4%BA%A46300%E5%85%83%E6%88%BF%E7%A7%9F&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_1_15_15&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"美方将延续对华企业禁令 外交部表态\",\"index\":15,\"hotTags\":0,\"content\":\"美方将延续对华企业禁令 外交部表态\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E7%BE%8E%E6%96%B9%E5%B0%86%E5%BB%B6%E7%BB%AD%E5%AF%B9%E5%8D%8E%E4%BC%81%E4%B8%9A%E7%A6%81%E4%BB%A4%20%E5%A4%96%E4%BA%A4%E9%83%A8%E8%A1%A8%E6%80%81&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_16&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"}],[{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"地球首位已知星际访客确认\",\"index\":16,\"hotTags\":0,\"content\":\"地球首位已知星际访客确认\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E5%9C%B0%E7%90%83%E9%A6%96%E4%BD%8D%E5%B7%B2%E7%9F%A5%E6%98%9F%E9%99%85%E8%AE%BF%E5%AE%A2%E7%A1%AE%E8%AE%A4&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_17&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"男子花8万元代写论文被“放鸽子”\",\"index\":17,\"hotTags\":0,\"content\":\"男子花8万元代写论文被“放鸽子”\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E7%94%B7%E5%AD%90%E8%8A%B18%E4%B8%87%E5%85%83%E4%BB%A3%E5%86%99%E8%AE%BA%E6%96%87%E8%A2%AB%E2%80%9C%E6%94%BE%E9%B8%BD%E5%AD%90%E2%80%9D&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_18&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"女子凌晨外卖被偷坐地崩溃大哭\",\"index\":18,\"hotTags\":0,\"content\":\"女子凌晨外卖被偷坐地崩溃大哭\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E5%A5%B3%E5%AD%90%E5%87%8C%E6%99%A8%E5%A4%96%E5%8D%96%E8%A2%AB%E5%81%B7%E5%9D%90%E5%9C%B0%E5%B4%A9%E6%BA%83%E5%A4%A7%E5%93%AD&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_19&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"广州8天累计感染破万\",\"index\":19,\"hotTags\":3,\"content\":\"广州8天累计感染破万\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E5%B9%BF%E5%B7%9E8%E5%A4%A9%E7%B4%AF%E8%AE%A1%E6%84%9F%E6%9F%93%E7%A0%B4%E4%B8%87&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_20&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"俄方宣布从赫尔松撤离\",\"index\":20,\"hotTags\":0,\"content\":\"俄方宣布从赫尔松撤离\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E4%BF%84%E6%96%B9%E5%AE%A3%E5%B8%83%E4%BB%8E%E8%B5%AB%E5%B0%94%E6%9D%BE%E6%92%A4%E7%A6%BB&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_21&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"意大利挖出大量2300年前青铜器\",\"index\":21,\"hotTags\":0,\"content\":\"意大利挖出大量2300年前青铜器\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E6%84%8F%E5%A4%A7%E5%88%A9%E6%8C%96%E5%87%BA%E5%A4%A7%E9%87%8F2300%E5%B9%B4%E5%89%8D%E9%9D%92%E9%93%9C%E5%99%A8&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_22&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"郑州多家银行出台延期还贷政策\",\"index\":22,\"hotTags\":0,\"content\":\"郑州多家银行出台延期还贷政策\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E9%83%91%E5%B7%9E%E5%A4%9A%E5%AE%B6%E9%93%B6%E8%A1%8C%E5%87%BA%E5%8F%B0%E5%BB%B6%E6%9C%9F%E8%BF%98%E8%B4%B7%E6%94%BF%E7%AD%96&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_23&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"草莓上市部分品种近200元一斤\",\"index\":23,\"hotTags\":0,\"content\":\"草莓上市部分品种近200元一斤\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E8%8D%89%E8%8E%93%E4%B8%8A%E5%B8%82%E9%83%A8%E5%88%86%E5%93%81%E7%A7%8D%E8%BF%91200%E5%85%83%E4%B8%80%E6%96%A4&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_24&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"1.1万人 Meta史上最大规模裁员开始\",\"index\":24,\"hotTags\":0,\"content\":\"1.1万人 Meta史上最大规模裁员开始\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=1.1%E4%B8%87%E4%BA%BA%20Meta%E5%8F%B2%E4%B8%8A%E6%9C%80%E5%A4%A7%E8%A7%84%E6%A8%A1%E8%A3%81%E5%91%98%E5%BC%80%E5%A7%8B&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_25&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"男子用羽毛球拍瞬间切好豆腐\",\"index\":25,\"hotTags\":0,\"content\":\"男子用羽毛球拍瞬间切好豆腐\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E7%94%B7%E5%AD%90%E7%94%A8%E7%BE%BD%E6%AF%9B%E7%90%83%E6%8B%8D%E7%9E%AC%E9%97%B4%E5%88%87%E5%A5%BD%E8%B1%86%E8%85%90&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_26&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"重庆:中心城区市民非必要不离开\",\"index\":26,\"hotTags\":0,\"content\":\"重庆:中心城区市民非必要不离开\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E9%87%8D%E5%BA%86%EF%BC%9A%E4%B8%AD%E5%BF%83%E5%9F%8E%E5%8C%BA%E5%B8%82%E6%B0%91%E9%9D%9E%E5%BF%85%E8%A6%81%E4%B8%8D%E7%A6%BB%E5%BC%80&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_27&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"江歌遗体局部照片疑遭泄露\",\"index\":27,\"hotTags\":0,\"content\":\"江歌遗体局部照片疑遭泄露\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E6%B1%9F%E6%AD%8C%E9%81%97%E4%BD%93%E5%B1%80%E9%83%A8%E7%85%A7%E7%89%87%E7%96%91%E9%81%AD%E6%B3%84%E9%9C%B2&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_28&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"郑州一高校学生突然离校?教育厅回应\",\"index\":28,\"hotTags\":3,\"content\":\"郑州一高校学生突然离校?教育厅回应\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E9%83%91%E5%B7%9E%E4%B8%80%E9%AB%98%E6%A0%A1%E5%AD%A6%E7%94%9F%E7%AA%81%E7%84%B6%E7%A6%BB%E6%A0%A1%3F%E6%95%99%E8%82%B2%E5%8E%85%E5%9B%9E%E5%BA%94&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_29&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"核酸机构被欠费停收样本?后续来了\",\"index\":29,\"hotTags\":0,\"content\":\"核酸机构被欠费停收样本?后续来了\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E6%A0%B8%E9%85%B8%E6%9C%BA%E6%9E%84%E8%A2%AB%E6%AC%A0%E8%B4%B9%E5%81%9C%E6%94%B6%E6%A0%B7%E6%9C%AC%EF%BC%9F%E5%90%8E%E7%BB%AD%E6%9D%A5%E4%BA%86&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=e697RrwTLk2v%2B0XQidXqds%2F88Sq1Cfp3dX2SUI8XxfayyvnzD6HXZWVKQ3ERnecN6Set&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_16_30_30&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"},{\"rsv_dl\":\"0_right_fyb_pchot_20811\",\"link\":\"南京被掌掴男童外耳和面部挫伤\",\"index\":30,\"hotTags\":0,\"content\":\"南京被掌掴男童外耳和面部挫伤\",\"num\":\"NaN千\",\"leftUrl\":\"/s?wd=%E5%8D%97%E4%BA%AC%E8%A2%AB%E6%8E%8C%E6%8E%B4%E7%94%B7%E7%AB%A5%E5%A4%96%E8%80%B3%E5%92%8C%E9%9D%A2%E9%83%A8%E6%8C%AB%E4%BC%A4&rsv_idx=2&tn=baiduhome_pg&usm=6&ie=utf-8&rsv_pq=88890ddd0001a34c&oq=JAVA&rsv_t=e697RrwTLk2v%2B0XQidXqds%2F88Sq1Cfp3dX2SUI8XxfayyvnzD6HXZWVKQ3ERnecN6Set&rqid=88890ddd0001a34c&rsf=01fd9fa76020b135851e605d2c1d6574_31_45_31&rsv_dl=0_right_fyb_pchot_20811&sa=0_right_fyb_pchot_20811\"}]],\"pn\":15,\"isHotData\":\"1\",\"$style\":{\"opr-toplist1-title\":\"opr-toplist1-title_1LgpS\",\"oprToplist1Title\":\"opr-toplist1-title_1LgpS\",\"icon-title\":\"icon-title_35rjV\",\"iconTitle\":\"icon-title_35rjV\",\"icon-right\":\"icon-right_1VdTi\",\"iconRight\":\"icon-right_1VdTi\",\"opr-toplist1-table\":\"opr-toplist1-table_3K7iH\",\"oprToplist1Table\":\"opr-toplist1-table_3K7iH\",\"opr-toplist1-from\":\"opr-toplist1-from_1B1wD\",\"oprToplist1From\":\"opr-toplist1-from_1B1wD\",\"opr-toplist1-update\":\"opr-toplist1-update_2WHdj\",\"oprToplist1Update\":\"opr-toplist1-update_2WHdj\",\"toplist-refresh-btn\":\"toplist-refresh-btn_lqkiP\",\"toplistRefreshBtn\":\"toplist-refresh-btn_lqkiP\",\"refresh-text\":\"refresh-text_1-d1i\",\"refreshText\":\"refresh-text_1-d1i\",\"opr-toplist1-hot-refresh-icon\":\"opr-toplist1-hot-refresh-icon_1BrLS\",\"oprToplist1HotRefreshIcon\":\"opr-toplist1-hot-refresh-icon_1BrLS\",\"animation-rotate\":\"animation-rotate_kdI0U\",\"animationRotate\":\"animation-rotate_kdI0U\",\"rotate\":\"rotate_3e5yB\",\"toplist1-hot-normal\":\"toplist1-hot-normal_12THH\",\"toplist1HotNormal\":\"toplist1-hot-normal_12THH\",\"toplist1-tr\":\"toplist1-tr_4kE4D\",\"toplist1Tr\":\"toplist1-tr_4kE4D\",\"toplist1-td\":\"toplist1-td_3zMd4\",\"toplist1Td\":\"toplist1-td_3zMd4\",\"toplist1-hot\":\"toplist1-hot_2RbQT\",\"toplist1Hot\":\"toplist1-hot_2RbQT\",\"icon-top\":\"icon-top_4eWFz\",\"iconTop\":\"icon-top_4eWFz\",\"toplist1-ad\":\"toplist1-ad_MP3Tt\",\"toplist1Ad\":\"toplist1-ad_MP3Tt\",\"toplist1-live-icon\":\"toplist1-live-icon_268If\",\"toplist1LiveIcon\":\"toplist1-live-icon_268If\",\"opr-toplist1-subtitle\":\"opr-toplist1-subtitle_3FULy\",\"oprToplist1Subtitle\":\"opr-toplist1-subtitle_3FULy\",\"opr-toplist1-link\":\"opr-toplist1-link_2YUtD\",\"oprToplist1Link\":\"opr-toplist1-link_2YUtD\",\"opr-toplist1-label\":\"opr-toplist1-label_3Mevn\",\"oprToplist1Label\":\"opr-toplist1-label_3Mevn\"},\"showIndex\":0,\"isRotate\":false,\"adIndex\":-100}--><div class=\"FYB_RD\"><div class=\"cr-title c-gap-bottom-xsmall\" data-click=\"true\" title=\"百度热搜\"><a class=\"c-color-t opr-toplist1-title_1LgpS\" href=\"https://top.baidu.com/board?platform=pc&amp;sa=pcindex_a_right\" target=\"_blank\"><i class=\"c-icon icon-title_35rjV\">\uE687</i><i class=\"c-icon icon-right_1VdTi\">\uE613</i></a><div class=\"opr-toplist1-update_2WHdj\" data-click=\"{fm:&#39;beha&#39;}\"><a class=\"OP_LOG_BTN toplist-refresh-btn_lqkiP c-font-normal\" href=\"javascript:void(0);\" style=\"text-decoration:none;\"><i class=\"c-icon\n" +
                "                            opr-toplist1-hot-refresh-icon_1BrLS\n" +
                "                            \">\uE619</i><span class=\"refresh-text_1-d1i\">换一换</span></a></div></div><div class=\"opr-toplist1-table_3K7iH\"><div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT  c-color-red toplist1-hot-normal_12THH\" style=\"opacity:1;\"><i class=\"c-icon icon-top_4eWFz\">\uE662</i></span><a target=\"_blank\" title=\"共建网络世界共创数字未来\" href=\"/s?wd=%E5%85%B1%E5%BB%BA%E7%BD%91%E7%BB%9C%E4%B8%96%E7%95%8C%E5%85%B1%E5%88%9B%E6%95%B0%E5%AD%97%E6%9C%AA%E6%9D%A5&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=de6dPuvW5mz2EM13SdQh5i%2B8WN79ZL%2BBwT3RFuUPb90XNvwhuRkZvjobopmpfsORF9GF&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_1&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 1, page: 1&#39;}\">共建网络世界共创数字未来</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   c-index-single-hot1\" style=\"opacity:1;\">1</span><a target=\"_blank\" title=\"31省份昨新增本土1133+7691\" href=\"/s?wd=31%E7%9C%81%E4%BB%BD%E6%98%A8%E6%96%B0%E5%A2%9E%E6%9C%AC%E5%9C%9F1133%2B7691&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_2&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 2, page: 1&#39;}\">31省份昨新增本土1133+7691</a><span class=\"c-text c-text-hot opr-toplist1-label_3Mevn\">热</span></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   c-index-single-hot2\" style=\"opacity:1;\">2</span><a target=\"_blank\" title=\"广州连续3天新增超2000例\" href=\"/s?wd=%E5%B9%BF%E5%B7%9E%E8%BF%9E%E7%BB%AD3%E5%A4%A9%E6%96%B0%E5%A2%9E%E8%B6%852000%E4%BE%8B&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_3&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 3, page: 1&#39;}\">广州连续3天新增超2000例</a><span class=\"c-text c-text-hot opr-toplist1-label_3Mevn\">热</span></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   c-index-single-hot3\" style=\"opacity:1;\">3</span><a target=\"_blank\" title=\"在诗画江南看见数字未来\" href=\"/s?wd=%E5%9C%A8%E8%AF%97%E7%94%BB%E6%B1%9F%E5%8D%97%E7%9C%8B%E8%A7%81%E6%95%B0%E5%AD%97%E6%9C%AA%E6%9D%A5&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_4&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 4, page: 1&#39;}\">在诗画江南看见数字未来</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">4</span><a target=\"_blank\" title=\"南京一动物园直播筹款:揭不开锅了\" href=\"/s?wd=%E5%8D%97%E4%BA%AC%E4%B8%80%E5%8A%A8%E7%89%A9%E5%9B%AD%E7%9B%B4%E6%92%AD%E7%AD%B9%E6%AC%BE%EF%BC%9A%E6%8F%AD%E4%B8%8D%E5%BC%80%E9%94%85%E4%BA%86&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_5&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 5, page: 1&#39;}\">南京一动物园直播筹款:揭不开锅了</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">5</span><a target=\"_blank\" title=\"男子带儿子体验烤红薯引发火灾\" href=\"/s?wd=%E7%94%B7%E5%AD%90%E5%B8%A6%E5%84%BF%E5%AD%90%E4%BD%93%E9%AA%8C%E7%83%A4%E7%BA%A2%E8%96%AF%E5%BC%95%E5%8F%91%E7%81%AB%E7%81%BE&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_6&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 6, page: 1&#39;}\">男子带儿子体验烤红薯引发火灾</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">6</span><a target=\"_blank\" title=\"盘点疯狂小杨哥商业版图\" href=\"/s?wd=%E7%9B%98%E7%82%B9%E7%96%AF%E7%8B%82%E5%B0%8F%E6%9D%A8%E5%93%A5%E5%95%86%E4%B8%9A%E7%89%88%E5%9B%BE&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_7&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 7, page: 1&#39;}\">盘点疯狂小杨哥商业版图</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">7</span><a target=\"_blank\" title=\"中国VT-4A1主战坦克首现中国航展\" href=\"/s?wd=%E4%B8%AD%E5%9B%BDVT-4A1%E4%B8%BB%E6%88%98%E5%9D%A6%E5%85%8B%E9%A6%96%E7%8E%B0%E4%B8%AD%E5%9B%BD%E8%88%AA%E5%B1%95&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=bf23U9nHYNarqpUvseKw%2BGHH2WZ%2FuNGAkdr3wy3vAe0ymOu5PDiFwiQoiAptp6YcWZs%2B&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_8&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 8, page: 1&#39;}\">中国VT-4A1主战坦克首现中国航展</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">8</span><a target=\"_blank\" title=\"福布斯发布2022中国内地富豪榜\" href=\"/s?wd=%E7%A6%8F%E5%B8%83%E6%96%AF%E5%8F%91%E5%B8%832022%E4%B8%AD%E5%9B%BD%E5%86%85%E5%9C%B0%E5%AF%8C%E8%B1%AA%E6%A6%9C&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_9&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 9, page: 1&#39;}\">福布斯发布2022中国内地富豪榜</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">9</span><a target=\"_blank\" title=\"示威男子当街朝英国国王扔鸡蛋\" href=\"/s?wd=%E7%A4%BA%E5%A8%81%E7%94%B7%E5%AD%90%E5%BD%93%E8%A1%97%E6%9C%9D%E8%8B%B1%E5%9B%BD%E5%9B%BD%E7%8E%8B%E6%89%94%E9%B8%A1%E8%9B%8B&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_10&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 10, page: 1&#39;}\">示威男子当街朝英国国王扔鸡蛋</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">10</span><a target=\"_blank\" title=\"乌克兰宣布夺回赫尔松州两个定居点\" href=\"/s?wd=%E4%B9%8C%E5%85%8B%E5%85%B0%E5%AE%A3%E5%B8%83%E5%A4%BA%E5%9B%9E%E8%B5%AB%E5%B0%94%E6%9D%BE%E5%B7%9E%E4%B8%A4%E4%B8%AA%E5%AE%9A%E5%B1%85%E7%82%B9&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_11&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 11, page: 1&#39;}\">乌克兰宣布夺回赫尔松州两个定居点</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">11</span><a target=\"_blank\" title=\"男子掌掴男童被刑拘 疑亲属下跪致歉\" href=\"/s?wd=%E7%94%B7%E5%AD%90%E6%8E%8C%E6%8E%B4%E7%94%B7%E7%AB%A5%E8%A2%AB%E5%88%91%E6%8B%98%20%E7%96%91%E4%BA%B2%E5%B1%9E%E4%B8%8B%E8%B7%AA%E8%87%B4%E6%AD%89&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_12&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 12, page: 1&#39;}\">男子掌掴男童被刑拘 疑亲属下跪致歉</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">12</span><a target=\"_blank\" title=\"赌徒跳河露光头被警方无人机发现\" href=\"/s?wd=%E8%B5%8C%E5%BE%92%E8%B7%B3%E6%B2%B3%E9%9C%B2%E5%85%89%E5%A4%B4%E8%A2%AB%E8%AD%A6%E6%96%B9%E6%97%A0%E4%BA%BA%E6%9C%BA%E5%8F%91%E7%8E%B0&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_13&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 13, page: 1&#39;}\">赌徒跳河露光头被警方无人机发现</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">13</span><a target=\"_blank\" title=\"媒体:“招弟”改名不该障碍重重\" href=\"/s?wd=%E5%AA%92%E4%BD%93%EF%BC%9A%E2%80%9C%E6%8B%9B%E5%BC%9F%E2%80%9D%E6%94%B9%E5%90%8D%E4%B8%8D%E8%AF%A5%E9%9A%9C%E7%A2%8D%E9%87%8D%E9%87%8D&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_14&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 14, page: 1&#39;}\">媒体:“招弟”改名不该障碍重重</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">14</span><a target=\"_blank\" title=\"老人住自己房子每月交6300元房租\" href=\"/s?wd=%E8%80%81%E4%BA%BA%E4%BD%8F%E8%87%AA%E5%B7%B1%E6%88%BF%E5%AD%90%E6%AF%8F%E6%9C%88%E4%BA%A46300%E5%85%83%E6%88%BF%E7%A7%9F&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=e0df8gXSvCc6ZGG63Rp4DzuiGt63rH%2FNhWkIwQY79Yd27xslkn6jctqukqAQbmF8tMSD&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_1_15_15&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 15, page: 1&#39;}\">老人住自己房子每月交6300元房租</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">15</span><a target=\"_blank\" title=\"美方将延续对华企业禁令 外交部表态\" href=\"/s?wd=%E7%BE%8E%E6%96%B9%E5%B0%86%E5%BB%B6%E7%BB%AD%E5%AF%B9%E5%8D%8E%E4%BC%81%E4%B8%9A%E7%A6%81%E4%BB%A4%20%E5%A4%96%E4%BA%A4%E9%83%A8%E8%A1%A8%E6%80%81&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_16&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 16, page: 1&#39;}\">美方将延续对华企业禁令 外交部表态</a></div></div></div><div style=\"display:none\"><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">16</span><a target=\"_blank\" title=\"地球首位已知星际访客确认\" href=\"/s?wd=%E5%9C%B0%E7%90%83%E9%A6%96%E4%BD%8D%E5%B7%B2%E7%9F%A5%E6%98%9F%E9%99%85%E8%AE%BF%E5%AE%A2%E7%A1%AE%E8%AE%A4&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_17&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 1, page: 2&#39;}\">地球首位已知星际访客确认</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">17</span><a target=\"_blank\" title=\"男子花8万元代写论文被“放鸽子”\" href=\"/s?wd=%E7%94%B7%E5%AD%90%E8%8A%B18%E4%B8%87%E5%85%83%E4%BB%A3%E5%86%99%E8%AE%BA%E6%96%87%E8%A2%AB%E2%80%9C%E6%94%BE%E9%B8%BD%E5%AD%90%E2%80%9D&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_18&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 2, page: 2&#39;}\">男子花8万元代写论文被“放鸽子”</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">18</span><a target=\"_blank\" title=\"女子凌晨外卖被偷坐地崩溃大哭\" href=\"/s?wd=%E5%A5%B3%E5%AD%90%E5%87%8C%E6%99%A8%E5%A4%96%E5%8D%96%E8%A2%AB%E5%81%B7%E5%9D%90%E5%9C%B0%E5%B4%A9%E6%BA%83%E5%A4%A7%E5%93%AD&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_19&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 3, page: 2&#39;}\">女子凌晨外卖被偷坐地崩溃大哭</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">19</span><a target=\"_blank\" title=\"广州8天累计感染破万\" href=\"/s?wd=%E5%B9%BF%E5%B7%9E8%E5%A4%A9%E7%B4%AF%E8%AE%A1%E6%84%9F%E6%9F%93%E7%A0%B4%E4%B8%87&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_20&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 4, page: 2&#39;}\">广州8天累计感染破万</a><span class=\"c-text c-text-hot opr-toplist1-label_3Mevn\">热</span></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">20</span><a target=\"_blank\" title=\"俄方宣布从赫尔松撤离\" href=\"/s?wd=%E4%BF%84%E6%96%B9%E5%AE%A3%E5%B8%83%E4%BB%8E%E8%B5%AB%E5%B0%94%E6%9D%BE%E6%92%A4%E7%A6%BB&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_21&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 5, page: 2&#39;}\">俄方宣布从赫尔松撤离</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">21</span><a target=\"_blank\" title=\"意大利挖出大量2300年前青铜器\" href=\"/s?wd=%E6%84%8F%E5%A4%A7%E5%88%A9%E6%8C%96%E5%87%BA%E5%A4%A7%E9%87%8F2300%E5%B9%B4%E5%89%8D%E9%9D%92%E9%93%9C%E5%99%A8&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=beacrSMF2w7J3qV4VM4cTitJcADEv1N0SQHIOb4jLY8OY7hw5ym9sdZdE%2F%2F8Mac1NL2d&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_22&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 6, page: 2&#39;}\">意大利挖出大量2300年前青铜器</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">22</span><a target=\"_blank\" title=\"郑州多家银行出台延期还贷政策\" href=\"/s?wd=%E9%83%91%E5%B7%9E%E5%A4%9A%E5%AE%B6%E9%93%B6%E8%A1%8C%E5%87%BA%E5%8F%B0%E5%BB%B6%E6%9C%9F%E8%BF%98%E8%B4%B7%E6%94%BF%E7%AD%96&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_23&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 7, page: 2&#39;}\">郑州多家银行出台延期还贷政策</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">23</span><a target=\"_blank\" title=\"草莓上市部分品种近200元一斤\" href=\"/s?wd=%E8%8D%89%E8%8E%93%E4%B8%8A%E5%B8%82%E9%83%A8%E5%88%86%E5%93%81%E7%A7%8D%E8%BF%91200%E5%85%83%E4%B8%80%E6%96%A4&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_24&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 8, page: 2&#39;}\">草莓上市部分品种近200元一斤</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">24</span><a target=\"_blank\" title=\"1.1万人 Meta史上最大规模裁员开始\" href=\"/s?wd=1.1%E4%B8%87%E4%BA%BA%20Meta%E5%8F%B2%E4%B8%8A%E6%9C%80%E5%A4%A7%E8%A7%84%E6%A8%A1%E8%A3%81%E5%91%98%E5%BC%80%E5%A7%8B&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_25&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 9, page: 2&#39;}\">1.1万人 Meta史上最大规模裁员开始</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">25</span><a target=\"_blank\" title=\"男子用羽毛球拍瞬间切好豆腐\" href=\"/s?wd=%E7%94%B7%E5%AD%90%E7%94%A8%E7%BE%BD%E6%AF%9B%E7%90%83%E6%8B%8D%E7%9E%AC%E9%97%B4%E5%88%87%E5%A5%BD%E8%B1%86%E8%85%90&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_26&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 10, page: 2&#39;}\">男子用羽毛球拍瞬间切好豆腐</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">26</span><a target=\"_blank\" title=\"重庆:中心城区市民非必要不离开\" href=\"/s?wd=%E9%87%8D%E5%BA%86%EF%BC%9A%E4%B8%AD%E5%BF%83%E5%9F%8E%E5%8C%BA%E5%B8%82%E6%B0%91%E9%9D%9E%E5%BF%85%E8%A6%81%E4%B8%8D%E7%A6%BB%E5%BC%80&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_27&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 11, page: 2&#39;}\">重庆:中心城区市民非必要不离开</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">27</span><a target=\"_blank\" title=\"江歌遗体局部照片疑遭泄露\" href=\"/s?wd=%E6%B1%9F%E6%AD%8C%E9%81%97%E4%BD%93%E5%B1%80%E9%83%A8%E7%85%A7%E7%89%87%E7%96%91%E9%81%AD%E6%B3%84%E9%9C%B2&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_28&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 12, page: 2&#39;}\">江歌遗体局部照片疑遭泄露</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">28</span><a target=\"_blank\" title=\"郑州一高校学生突然离校?教育厅回应\" href=\"/s?wd=%E9%83%91%E5%B7%9E%E4%B8%80%E9%AB%98%E6%A0%A1%E5%AD%A6%E7%94%9F%E7%AA%81%E7%84%B6%E7%A6%BB%E6%A0%A1%3F%E6%95%99%E8%82%B2%E5%8E%85%E5%9B%9E%E5%BA%94&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=fdd7B2wWpcE63yCpfQp%2Fi78sno6nNNM1gMUb0wfafEnZhbWMJOfhVZ5o3fvDcjOOIqv1&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_29&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 13, page: 2&#39;}\">郑州一高校学生突然离校?教育厅回应</a><span class=\"c-text c-text-hot opr-toplist1-label_3Mevn\">热</span></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">29</span><a target=\"_blank\" title=\"核酸机构被欠费停收样本?后续来了\" href=\"/s?wd=%E6%A0%B8%E9%85%B8%E6%9C%BA%E6%9E%84%E8%A2%AB%E6%AC%A0%E8%B4%B9%E5%81%9C%E6%94%B6%E6%A0%B7%E6%9C%AC%EF%BC%9F%E5%90%8E%E7%BB%AD%E6%9D%A5%E4%BA%86&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=e697RrwTLk2v%2B0XQidXqds%2F88Sq1Cfp3dX2SUI8XxfayyvnzD6HXZWVKQ3ERnecN6Set&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_16_30_30&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 14, page: 2&#39;}\">核酸机构被欠费停收样本?后续来了</a></div></div><div class=\"toplist1-tr_4kE4D\"><div class=\"toplist1-td_3zMd4 opr-toplist1-link_2YUtD\"><span class=\"c-index-single toplist1-hot_2RbQT   toplist1-hot-normal_12THH\" style=\"opacity:1;\">30</span><a target=\"_blank\" title=\"南京被掌掴男童外耳和面部挫伤\" href=\"/s?wd=%E5%8D%97%E4%BA%AC%E8%A2%AB%E6%8E%8C%E6%8E%B4%E7%94%B7%E7%AB%A5%E5%A4%96%E8%80%B3%E5%92%8C%E9%9D%A2%E9%83%A8%E6%8C%AB%E4%BC%A4&amp;rsv_idx=2&amp;tn=baiduhome_pg&amp;usm=6&amp;ie=utf-8&amp;rsv_pq=88890ddd0001a34c&amp;oq=JAVA&amp;rsv_t=e697RrwTLk2v%2B0XQidXqds%2F88Sq1Cfp3dX2SUI8XxfayyvnzD6HXZWVKQ3ERnecN6Set&amp;rqid=88890ddd0001a34c&amp;rsf=01fd9fa76020b135851e605d2c1d6574_31_45_31&amp;rsv_dl=0_right_fyb_pchot_20811&amp;sa=0_right_fyb_pchot_20811\" class=\"c-font-medium c-color-t opr-toplist1-subtitle_3FULy\" data-click=\"{&#39;clk_info&#39;: &#39;index: 15, page: 2&#39;}\">南京被掌掴男童外耳和面部挫伤</a></div></div></div></div></div></div>\n" +
                "        </div>";

        // 正则表达式技术
        // 1.创建一个Pattern对象,模式对象  可以理解为一个正则表达式对象
        Pattern pattern = Pattern.compile("<a target=\"_blank\" title=\"(\\S*)\" ");

        //2.创建一个匹配器对象
        // 理解: 就是matcher匹配器按照样式pattern到content中匹配
        // 找到就返回true 否则返回false
        Matcher matcher = pattern.matcher(content);

        // 3.可以开始循环匹配
        int i = 0;
        while (matcher.find()) {
            // 匹配到内容,文本,放到m.group(1)
            System.out.println("热搜"+(++i)+". "+matcher.group(1));
        }

    }
    /**
     * 提取IP地址
     *
     * @param
     * @return void
     * @date 2022/11/10 11:33
     * @author wty
     **/
    @Test
    public void getRegexpExperienceIPAddress(){

        // 传统方法是:遍历,代码量大,效率不高
        content = "私有地址(Private address)属于非注册地址,专门为组织机构内部使用。\n" +
                "以下列出留用的内部私有地址\n" +
                "A类 10.0.0.0--10.255.255.255\n" +
                "B类 172.16.0.0--172.31.255.255\n" +
                "C类 192.168.0.0--192.168.255.255";

        // 正则表达式技术
        // 1.创建一个Pattern对象,模式对象  可以理解为一个正则表达式对象
        Pattern pattern = Pattern.compile("\\d+\\.\\d+\\.\\d+\\.\\d");

        //2.创建一个匹配器对象
        // 理解: 就是matcher匹配器按照样式pattern到content中匹配
        // 找到就返回true 否则返回false
        Matcher matcher = pattern.matcher(content);

        // 3.可以开始循环匹配
        int i = 0;
        while (matcher.find()) {
            // 匹配到内容,文本,放到m.group(0)
            System.out.println("IP地址"+(++i)+" "+matcher.group(0));
        }

    }
}

提出几个问题

提出几个问题

提出几个问题

正则表达式

正则表达式的引出

正则表达式的引出

基本介绍

基本介绍

正则表达式的底层实现

正则表达式的底层实现

package com.regexp;

import org.junit.Test;

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

/**分析Java正则表达式的底层原理
 *
 * 为让大家对正则表达式底层实现有一个直观的映象,给大家举个实例
 * 给你一段字符串(文本),请找出所有四个数字连在一 起的子串,比如:
 * 应该找到1998 1999 3443 9889 ===>分析底层实现RegTheory.java
 *
 * @author wty
 * @date 2022/11/10 11:55
 */

public class RegTheory {
    private String content ="1998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了"+
"第二代Java平台(简称为Java2)的3个版本:J2ME(Java2MicroEdition,Java2平台的微型"+
"版),应用于移动、无线及有限资源的环境;J2SE(Java2StandardEdition,Java2平台的"+
"标准版),应用于桌面环境;J2EE(Java2EnterpriseEdition,Java2平台的企业版),应"+
"用3443于基于Java的应用服务器。Java2平台的发布,是Java发展过程中最重要的一个"+
"里程碑,标志着Java的应用开始普及9889";
    @Test
    @SuppressWarnings({"all"})
    public void regexpExperience02(){
        // 目标:找出所有四个数字连在一起的子串
        // 说明 1. \\d 表示一个任意的数字
        String regStr = "\\d\\d\\d\\d";
        //     2. 创建模式对象
        Pattern pattern = Pattern.compile(regStr);
        //     3. 创建匹配器:按照正则表达式的规则regStr匹配content字符串
        Matcher matcher = pattern.matcher(content);

        /**
         * matcher.find()
         * ---第一次---
         * 1.根据指定的规则,定位满足规则的子字符串(比如1998)
         * 2.找到后将子字符串开始的索引记录到matcher对象的属性
         * 开始位置记录到 int groups[0] = 0,
         * 子字符串结束的索引+1的值(比如1998中8是content[3],记录是3+1)记录到 groups[1] = 4,
         * 3.同时记录oldLast 的值为 子字符串结束的索引+1的值 即4,即下次执行find方法的时候就从4开始
         *group的源码
         *     public String group(int var1) {
         *         if (this.first < 0) {
         *             throw new IllegalStateException("No match found");
         *         } else if (var1 >= 0 && var1 <= this.groupCount()) {
         *             return this.groups[var1 * 2] != -1&& this.groups[var1 * 2 + 1] != -1
         *             ? this.getSubSequence(this.groups[var1 * 2], this.groups[var1 * 2 + 1]).toString()
         *             : null;
         *         } else {
         *             throw new IndexOutOfBoundsException("No group " + var1);
         *         }
         *     }
         *     var1 = 0
         *     this.getSubSequence(this.groups[var1 * 2], this.groups[var1 * 2 + 1]).toString()
         *   即 this.getSubSequence(this.groups[0 * 2], this.groups[0 * 2 + 1]).toString()
         *   即 this.getSubSequence(this.groups[0], this.groups[1]).toString()
         *
         *
         *     根据 groups[0] = 1 和 group[1] = 4 的记录位置,从content开始截取字符串
         *     就是[0,4},包含0但是不包含4的索引位置
         *
         * ---第二次---
         * 1.根据指定的规则,定位满足规则的子字符串(比如1999)
         * 2.找到后将子字符串开始的索引记录到matcher对象的属性
         * 开始位置(1999中1的位置)记录到 int groups[0] = 31,
         * 子字符串结束的索引+1的值(比如1999中9是content[34],记录是33+1)记录到 groups[1] = 35,
         * 3.同时记录oldLast 的值为 子字符串结束的索引+1的值 即35,即下次执行find方法的时候就从35开始
         * group的源码
         *  public String group(int var1) {
         *      if (this.first < 0) {
         *          throw new IllegalStateException("No match found");
         *      } else if (var1 >= 0 && var1 <= this.groupCount()) {
         *          return this.groups[var1 * 2] != -1&& this.groups[var1 * 2 + 1] != -1
         *                  ? this.getSubSequence(this.groups[var1 * 2], this.groups[var1 * 2 + 1]).toString()
         *                  : null;
         *      } else {
         *          throw new IndexOutOfBoundsException("No group " + var1);
         *              }
         *      }
         *          var1 = 0
         *      this.getSubSequence(this.groups[var1 * 2], this.groups[var1 * 2 + 1]).toString()
         *   即 this.getSubSequence(this.groups[0 * 2], this.groups[0 * 2 + 1]).toString()
         *   即 this.getSubSequence(this.groups[0], this.groups[1]).toString()
         *
         *
         *  根据 groups[0] = 31 和 group[1] = 35 的记录位置,从content开始截取字符串
         *  就是[31,35},包含0但是不包含35的索引位置
         *
         */
        while (matcher.find()) {
            System.out.println("找到:  " + matcher.group(0));
        }


    }

    @Test
    @SuppressWarnings({"all"})
    public void regexpExperience03(){
        // 目标:找出所有四个数字连在一起的子串
        // 说明 1. \\d 表示一个任意的数字,用括号分成2组
        String regStr = "(\\d\\d)(\\d\\d)";
        //     2. 创建模式对象
        Pattern pattern = Pattern.compile(regStr);
        //     3. 创建匹配器:按照正则表达式的规则regStr匹配content字符串
        Matcher matcher = pattern.matcher(content);

        /**
         * matcher.find()
         * ---第一次---
         * 1.根据指定的规则,定位满足规则的子字符串(比如1998)
         * 2.找到后将子字符串开始的索引记录到matcher对象的属性
         * 开始位置记录到 int groups[0] = 0,
         * 子字符串结束的索引+1的值(比如1998中8是content[3],记录是3+1)记录到 groups[1] = 4,
         * 3.同时记录oldLast 的值为 子字符串结束的索引+1的值 即4,即下次执行find方法的时候就从4开始
         *group的源码
         *     public String group(int var1) {
         *         if (this.first < 0) {
         *             throw new IllegalStateException("No match found");
         *         } else if (var1 >= 0 && var1 <= this.groupCount()) {
         *             return this.groups[var1 * 2] != -1&& this.groups[var1 * 2 + 1] != -1
         *             ? this.getSubSequence(this.groups[var1 * 2], this.groups[var1 * 2 + 1]).toString()
         *             : null;
         *         } else {
         *             throw new IndexOutOfBoundsException("No group " + var1);
         *         }
         *     }
         *     var1 = 0
         *     this.getSubSequence(this.groups[var1 * 2], this.groups[var1 * 2 + 1]).toString()
         *   即 this.getSubSequence(this.groups[0 * 2], this.groups[0 * 2 + 1]).toString()
         *   即 this.getSubSequence(this.groups[0], this.groups[1]).toString()
         *
         *     1998 = 拆分为(19)(98)
         *     根据 groups[0] = 0 和 group[1] = 4 的记录位置, 匹配到的字符串的开始和结束索引+1
         *     第一组 记录19的起始位置和结束位置(i+1) group[2] = 0          group[3] = 2  匹配到该字符串第一组的开始和结束索引+1 即var1 = 1
         *     第二组 记录98的起始位置和结束位置(i+1) group[4] = 2         group[5] = 4   匹配到该字符串第二组的开始和结束索引+1 即var1 = 2
         *     从content开始截取字符串
         *     就是[0,4},包含0但是不包含4的索引位置
         *
         * ---第二次---
         * 1.根据指定的规则,定位满足规则的子字符串(比如1999)
         * 2.找到后将子字符串开始的索引记录到matcher对象的属性
         * 开始位置(1999中1的位置)记录到 int groups[0] = 31,
         * 子字符串结束的索引+1的值(比如1999中9是content[34],记录是33+1)记录到 groups[1] = 35,
         * 3.同时记录oldLast 的值为 子字符串结束的索引+1的值 即35,即下次执行find方法的时候就从35开始
         * group的源码
         *  public String group(int var1) {
         *      if (this.first < 0) {
         *          throw new IllegalStateException("No match found");
         *      } else if (var1 >= 0 && var1 <= this.groupCount()) {
         *          return this.groups[var1 * 2] != -1&& this.groups[var1 * 2 + 1] != -1
         *                  ? this.getSubSequence(this.groups[var1 * 2], this.groups[var1 * 2 + 1]).toString()
         *                  : null;
         *      } else {
         *          throw new IndexOutOfBoundsException("No group " + var1);
         *              }
         *      }
         *          var1 = 0
         *      this.getSubSequence(this.groups[var1 * 2], this.groups[var1 * 2 + 1]).toString()
         *   即 this.getSubSequence(this.groups[0 * 2], this.groups[0 * 2 + 1]).toString()
         *   即 this.getSubSequence(this.groups[0], this.groups[1]).toString()
         *
         *     1999 = 拆分为(19)(99)
         *     根据 groups[0] = 31 和 group[1] = 35 的记录位置,
         *     第一组 记录19的起始位置和结束位置(i+1) group[2] = 31          group[3] = 33
         *     第二组 记录99的起始位置和结束位置(i+1) group[4] = 33         group[5] = 35
         *
         *   从content开始截取字符串
         *   就是[31,35},包含0但是不包含35的索引位置
         *
         */
        while (matcher.find()) {
            // 正则表达式中()是分组的意思
            // group(0)表示匹配到的整体的子字符串
            System.out.println("找到:  " + matcher.group(0));
            // group(1)表示匹配到的的子字符串的第一组
            System.out.println("第一组():" + matcher.group(1));
            // group(2)表示匹配到的的子字符串的第二组
            System.out.println("第二组():" + matcher.group(2));
            System.out.println();
            // 分组的数字不能越界否则抛出异常
            // System.out.println("第三组():" + matcher.group(3));
            // throw new IndexOutOfBoundsException("No group " + var1);
        }


    }
}

正则表达式语法

基本介绍

基本介绍

1.元字符转义号

在这里插入图片描述

代码示例:

package com.regexp;

import org.junit.Test;

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

/**
 * 演示转义字符的使用
 *
 * @author wty
 * @date 2022/11/10 16:53
 */
public class RegexpExperience02 {
    @Test
    public void regexpExperience02(){
        String content = "abc$()awg()123()";

        // 匹配
        String regStr = "\\(";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到 "+matcher.group(0));
        }
    }
}

匹配.

    /**
     * 匹配.
     *
     * @param
     * @return void
     * @date 2022/11/10 16:58
     * @author wty
     **/
    @Test
    public void regexpExperience03(){
        String content = "abc$()awg.()123()";

        // 匹配.必须带上\\转义符
        //    否则会匹配所有字符
        String regStr = "\\.";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到 "+matcher.group(0));
        }
    }

2.元字符-字符匹配符

元字符-字符匹配符

元字符-字符匹配符2

\d代码示例

   /**
     * \\d
     *
     * @param
     * @return void
     * @date 2022/11/10 16:58
     * @author wty
     **/
    @Test
    public void regexpExperience04(){
        String content = "abc$()awg.()123()";

        // 匹配一个3位数
        //String regStr = "\\d\\d\\d";
        // 上下两种方式等价
        String regStr = "\\d{3}";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到 "+matcher.group(0));
        }
    }

字符匹配符 示例

字符匹配符

代码示例

package com.regexp;

import org.junit.Test;

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

/**字符匹配符
 *
 * @author wty
 * @date 2022/11/10 17:23
 */
public class RegexpExperience03 {
    @Test
    public void regexpExperience03(){
        String content = "A22c8abcABCaBC";
        //匹配 a-z 之间任意一个字
        //String regStr = "[a-z]";

        //匹配 A-Z 之间任意一个字
        //String regStr = "[A-Z]";

        // 匹配abc子串  结果只能找到abc
        //String regStr = "abc";

        // 匹配abc字串 不区分大小写 结果是abc  ABC
        //String regStr = "(?i)abc";

        // 匹配bc字串 不区分大小写 结果是bc  BC
        //String regStr = "(?i)bc";

        // 匹配abc字串 bc不区分大小写 结果是abc  aBC
        //String regStr = "a(?i)bc";

        // 匹配abc字串 b不区分大小写 结果是abc
        String regStr = "a((?i)b)c";


        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("匹配到: " + matcher.group(0));
        }
    }

    /**
     * 匹配不区分大小写
     *
     * @param
     * @return void
     * @date 2022/11/10 17:36
     * @author wty
     **/
    @Test
    public void regexpExperience04(){
        String content = "A22c8abcABCaBC";

        // 匹配abc字串 b不区分大小写 结果是abc
        String regStr = "bc";


        Pattern pattern = Pattern.compile(regStr,Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("匹配到: " + matcher.group(0));
        }
        /**查询结果
         *
         * 匹配到: bc
         * 匹配到: BC
         * 匹配到: BC
         */
    }

    /**
     * 匹配大写字母和数字
     *
     * @param
     * @return void
     * @date 2022/11/10 17:36
     * @author wty
     **/
    @Test
    public void regexpExperience05(){
        String content = "A22c8abcABCaBC2";

        // 匹配A-Z字串 结果是所有英文大写字母
        //String regStr = "[A-Z]";

        // 匹配0~9之间的任意数字
        String regStr = "[0-9]";

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("匹配到: " + matcher.group(0));
        }
        /**查询结果
         *
         * 匹配到: bc
         * 匹配到: BC
         * 匹配到: BC
         */
    }
}

字符匹配符

package com.regexp;

import org.junit.Test;

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

/**
 * @author wty
 * @date 2022/11/10 17:43
 */
public class RegexpExperience04 {
    /**
     * 匹配非字母、非数字的字符
     *
     * @param
     * @return void
     * @date 2022/11/10 17:43
     * @author wty
     **/
    @Test
    public void RegexpExperience04(){
        String content = "A22c8abcABCaBC2";

        // 找到不是小写字母a-z的所有字符
        //String regStr = "[^a-z]";

        // 找到不是数字0-9的所有字符
        String regStr = "[^0-9]";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到\t"+matcher.group(0));
        }

    }
}

字符匹配符

package com.regexp;

import org.junit.Test;

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

/**
 * @author wty
 * @date 2022/11/10 19:07
 */
public class RegexpExperience05 {
    @Test
    public void regexpExperience05(){
        String content ="A  22ce.8,abc ABC_aBC 2";
        // 可以匹配abcd中的任意一个字符,只能是小写的
        //String regStr = "[abcd]";

        // 可以匹配不是abcd中的任意一个字符,大小写字母或者数字都可以
        //String regStr = "[^abcd]";

        // \\D表示 不是0~9的数字 相当于取反
        //String regStr = "\\D";

        // w 表示任意大小写英文字母、数字和下划线
        //String regStr = "\\w";

        // \\W 表示任意大小写英文字母、数字和下划线
        //String regStr = "\\W";
        // 等价于
        //String regStr = "[^(a-zA-Z0-9_)]";

        // \\s表示匹配任何空白字符(空格制表符)
        //String regStr = "\\s";

        // \\S表示匹配任何非空白字符(和\\s相反) 除了空格和制表符都匹配上
        //String regStr = "\\S";

        // .匹配除了\n(换行符)之外的所有字符,如果要匹配.则需要\\.
        //String regStr = ".";
        String regStr = "\\.";

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到:" + matcher.group(0));
        }
    }
}

2.元字符-选择匹配符

选择匹配符

package com.regexp;

import org.junit.Test;

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

/**
 * 选择匹配符
 *
 * @author wty
 * @date 2022/11/10 19:25
 */
public class RegexpExperience06 {
    @Test
    public void regexpExperience06(){
        String content ="hanshunping韩顺平 寒";
        String regStr = "han|韩|寒";

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到:" + matcher.group(0));
        }
    }
}

3.元字符-限定符

元字符-限定符
正则表达式

举例说明

举例说明
限定符

package com.regexp;

import org.junit.Test;

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

/**
 * @author wty
 * @date 2022/11/10 19:33
 */
public class RegexpExperience07 {
    @Test
    public void regexpExperience07(){
        String content = "1111111234aaahelloaaaa24";

        // 匹配连续3个a
        //String regStr = "a{3}";
        // 等价于
        //String regStr = "aaa";

        // 匹配连续4个1
        //String regStr = "1{4}";
        // 等价于
        //String regStr = "1111";


        // 匹配2位任意数字
        //String regStr = "\\d{2}";

        // 连续3个a或者连续4个a(贪婪匹配:尽可能的匹配多的,如果有4个优先匹配4个a)
        //String regStr = "a{3,4}";

        // 连续4个1或者5个1
        //String regStr = "1{4,5}";

        // 任意一个数字连续出现2次到5次
        String regStr = "\\d{2,5}";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到: "+matcher.group(0) );
        }
    }
}

限定符3

package com.regexp;

import org.junit.Test;

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

/**
 * @author wty
 * @date 2022/11/10 19:56
 */
public class RegexpExperience08 {
    @Test
    public void regexpExperience07(){
        String content = "a1111111234aaahelloaaaa24";

        // 匹配  1出现1次 到多次(默认贪婪匹配)
        //String regStr = "1+";

        // 匹配 任意一个数字出现1到多次(默认贪婪匹配)
        //String regStr = "\\d+";

        // 匹配 1出现0次(0次就是空)到多次(默认贪婪匹配)
        //String regStr = "1*";

        // 匹配 a出现0次或者1次
        //String regStr = "a?";

        // 匹配 a1或者a
        String regStr = "a1?";

        



        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到: "+matcher.group(0) );
        }
    }
}

非贪婪匹配

package com.regexp;

import org.junit.Test;

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

/**
 * 非贪婪匹配
 *
 * @author wty
 * @date 2022/11/11 9:12
 */
public class RegexpExperience12 {
    @Test
    public void regexpExperience12(){
        String content = "hello 1111111 ok";
        // 贪婪匹配尽可能多的数字
        //String regStr = "\\d+";
        /**
         * 结果
         * 找到1111111
         */

        // 非贪婪匹配
        String regStr = "\\d+?";
        /**
         * 结果
         * 找到1
         * 找到1
         * 找到1
         * 找到1
         * 找到1
         * 找到1
         * 找到1
         *
         * Process finished with exit code 0
         */

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到" + matcher.group(0));
        }
    }
}

4.定位符

定位符

package com.regexp;

import org.junit.Test;

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

/**演示定位符的使用
 *
 * @author wty
 * @date 2022/11/10 23:02
 */
public class RegexpExperience09 {
    @Test
    public void regexpExperience09(){
        String content = "123abc";

        // 以数字开头,结尾是0个或者多个小写字母
        //String regStr = "^[0-9]+[a-z]*";
        /**
         * 结果
         *找到:123abc
         */

        // 以数字开头,结尾是0个或者多个小写字母
        content = "a123abc";
        //String regStr = "^[0-9]+[a-z]*";
        /**
         * 结果
         *空
         * 问题在于a不是以数字开头
         */

        // 以数字开头,结尾是0个或者多个小写字母
        content = "123abc2";
        //String regStr = "^[0-9]+[a-z]*";
        /**
         * 结果
         *找到:123abc
         *
         */

        // 以数字开头,结尾是0个或者多个小写字母
        content = "123";
        //String regStr = "^[0-9]+[a-z]*";
        /**
         * 结果
         *找到:123
         *
         */

        content = "123abc12";

        // 以数字开头,小写字母结尾
       // String regStr = "^[0-9]+[a-z]+$";
        /**
         * 结果
         * 空
         * 原因:结尾12是数字不是字母
         */


        content = "123abc";

        // 以数字开头,小写字母结尾
       // String regStr = "^[0-9]+[a-z]+$";
        /**
         * 结果
         * 123abc
         */

        content = "123";
        // 必须以至少1个数字开头,必须至少一个小写字母结尾
        //String regStr = "^[0-9]+[a-z]+$";
        /**
         * 结果
         * 空
         */

        content = "123-ab";
        // 必须以至少1个数字开头,必须至少一个小写字母结尾,并且中间有一个-
        //String regStr = "^[0-9]+\\-[a-z]+$";
        /**
         * 结果
         * 找到123-ab
         */


        content = "hanaiwigahgiahan";
        // 匹配目标字符串的边界,只取最后最近的那个han
        // (这里的边界不一定是最后只要是空格的都可以)
        //String regStr = "han\\b";
        /**
         * 结果
         * 找到 han
         */


        content = "hanaiwigahangiahan";
        // 匹配目标字符串的非边界,这里会取到前2个
        //String regStr = "han\\B";
        /**
         * 结果
         * 找到 han
         *
         */

        content = "hanaiwigahan giahan";
        // 匹配目标字符串的边界
        // (这里的边界不一定是最后只要是空格的都可以)
        //String regStr = "han\\b";
        /**
         * 结果
         * 找到 han
         * 找到 han
         */

        content = "hanaiwigahanty giahan";
        // 匹配目标字符串的非边界,只要不是最后那个,前面的都取出来
        // (这里的边界不一定是最后只要是空格的都可以)
        //String regStr = "han\\B";
        /**
         * 结果
         * 找到 han
         * 找到 han
         */


        content = "hanaiwigahanty giahan";
        // 匹配目标字符串的非边界,只要不是最后那个,前面的都取出来
        // (这里的边界不一定是最后只要是空格的都可以)
        String regStr = "han\\b";
        /**
         * 结果
         * 找到 han
         * 
         */


        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到:" + matcher.group(0));
        }
    }
}

5.分组

常用分组

分组

package com.regexp;

import org.junit.Test;

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

/**分组
 *
 * @author wty
 * @date 2022/11/10 23:38
 */
public class RegexpExperience10 {
    /**
     * 未分组的情况
     *
     * @param
     * @return void
     * @date 2022/11/10 23:42
     * @author wty
     **/
    @Test
    public void regexpExperience10(){
        String content = "hsp suibian 7788 n3175han";

        // 未分组的情况
        //String regStr = "\\d\\d\\d\\d";
        /**
         * 结果:
         * 找到:7788
         * 找到:3175
         */

        // 分组的情况
        String regStr = "(\\d\\d)(\\d\\d)";

        /**
         * 结果:
         * 找到:7788
         * 找到:3175
         */

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到:" + matcher.group(0));
        }
    }

    /**
     * 分组的情况:分成2个组
     *
     * @param
     * @return void
     * @date 2022/11/10 23:42
     * @author wty
     **/
    @Test
    public void regexpExperience11(){
        String content = "hsp suibian 7788 n3175han";

        // 分组的情况
        // 说明
        // 1.matcher.group(0) 7788
        // 2.matcher.group(1) 77
        // 3.matcher.group(2) 88
        String regStr = "(\\d\\d)(\\d\\d)";

        /**
         * 找到:7788
         * 找到第1个分组77
         * 找到第2个分组88
         * 找到:3175
         * 找到第1个分组31
         * 找到第2个分组75
         *
         */

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到:" + matcher.group(0));
            System.out.println("找到第1个分组" + matcher.group(1));
            System.out.println("找到第2个分组" + matcher.group(2));
        }
    }

    /**
     * 分组的情况 分成3个组
     *
     * @param
     * @return void
     * @date 2022/11/10 23:42
     * @author wty
     **/
    @Test
    public void regexpExperience12(){
        String content = "hsp suibian 7788 n3175han";

        // 分组的情况
        // 说明
        // 1.matcher.group(0) 7788
        // 2.matcher.group(1) 77
        // 3.matcher.group(2) 8
        // 4.matcher.group(2) 8
        String regStr = "(\\d\\d)(\\d)(\\d)";

        /**
         * 找到:7788
         * 找到第1个分组77
         * 找到第2个分组8
         * 找到第3个分组8
         * 找到:3175
         * 找到第1个分组31
         * 找到第2个分组7
         * 找到第3个分组5
         *
         */

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到:" + matcher.group(0));
            System.out.println("找到第1个分组" + matcher.group(1));
            System.out.println("找到第2个分组" + matcher.group(2));
            System.out.println("找到第3个分组" + matcher.group(3));
        }
    }

    /**
     * 命名分组
     * 分组的情况:分成2个组
     *
     * @param
     * @return void
     * @date 2022/11/10 23:42
     * @author wty
     **/
    @Test
    public void regexpExperience13(){
        String content = "hsp suibian 7788 n3175han";

        // 分组的情况
        // 说明
        // 1.matcher.group(0) 7788
        // 2.matcher.group(1) 77
        // 3.matcher.group(2) 88
        String regStr = "(?<g1>\\d\\d)(?<g2>\\d\\d)";

        /**
         * 找到:7788
         * 找到第1个分组77
         * 找到第1个分组(通过组名称来取)77
         * 找到第2个分组88
         * 找到第2个分组(通过组名称来取)88
         * 找到:3175
         * 找到第1个分组31
         * 找到第1个分组(通过组名称来取)31
         * 找到第2个分组75
         * 找到第2个分组(通过组名称来取)75
         *
         */

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到:" + matcher.group(0));
            System.out.println("找到第1个分组" + matcher.group(1));
            System.out.println("找到第1个分组(通过组名称来取)" + matcher.group("g1"));
            System.out.println("找到第2个分组" + matcher.group(2));
            System.out.println("找到第2个分组(通过组名称来取)" + matcher.group("g2"));
        }
    }

}

非捕获分组

特别分组
案例

package com.regexp;

import org.junit.Test;

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

/**
 * 非捕获分组
 *
 * @author wty
 * @date 2022/11/11 0:18
 */
public class RegexpExperience11 {
    /**
     * ?:
     *
     * @param
     * @return void
     * @date 2022/11/11 0:24
     * @author wty
     **/
    @Test
    public void regexpExperience11(){
        String content = "hello韩顺平教育 jack韩顺平老师 韩顺平同学hello";
        //String regStr = "韩顺平教育|韩顺平老师|韩顺平同学";
        // 等价于(非捕获分组) 形式上是分组但是实际不是分组
        String regStr = "韩顺平(?:教育|老师|同学)";
        /**
         * 结果
         * 找到 韩顺平教育
         * 找到 韩顺平老师
         * 找到 韩顺平同学
         */

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到 "+matcher.group(0));
            //System.out.println("找到 "+matcher.group(1));
            /**
             * 抛出异常
             * java.lang.IndexOutOfBoundsException: No group 1
             */
        }
    }

    /**
     * ?=
     *
     * @param
     * @return void
     * @date 2022/11/11 0:24
     * @author wty
     **/
    @Test
    public void regexpExperience12(){
        String content = "hello韩顺平教育 jack韩顺平老师 韩顺平同学hello";
        //String regStr = "韩顺平教育|韩顺平老师";
        // 等价于(非捕获分组) 形式上是分组但是实际不是分组
        String regStr = "韩顺平(?=教育|老师)";
        /**
         * 结果
         * 找到 韩顺平
         * 找到 韩顺平
         *
         * 说明:这里的韩顺平是[韩顺平教育]、[韩顺平老师]中的韩顺平
         */

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到 "+matcher.group(0));
            //System.out.println("找到 "+matcher.group(1));
            /**
             * 抛出异常
             * java.lang.IndexOutOfBoundsException: No group 1
             */
        }
    }

    /**
     * ?!
     *
     * @param
     * @return void
     * @date 2022/11/11 0:24
     * @author wty
     **/
    @Test
    public void regexpExperience13(){
        String content = "hello韩顺平教育 jack韩顺平老师 韩顺平同学hello";
        //String regStr = "韩顺平教育|韩顺平老师";
        // 等价于(非捕获分组) 形式上是分组但是实际不是分组
        String regStr = "韩顺平(?!教育|老师)";
        /**
         * 结果
         * 找到 韩顺平
         *
         * 说明:这里的韩顺平是[韩顺平同学]中的韩顺平
         */

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到 "+matcher.group(0));
            //System.out.println("找到 "+matcher.group(1));
            /**
             * 抛出异常
             * java.lang.IndexOutOfBoundsException: No group 1
             */
        }
    }
}

正则表达式应用实例

正则表达式应用实例

package com.homework;

import org.junit.Test;

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

/**
 * 正则表达式的应用实例
 *
 * @author wty
 * @date 2022/11/11 9:21
 */
public class Homework01 {
    /**
     * 定位汉字
     *
     * @param
     * @return void
     * @date 2022/11/11 9:25
     * @author wty
     **/
    @Test
    public void homework01(){
        String content = "韩顺平教育";

        // 汉字(汉字的范围)
        //String regString = "^[\u0391-\uffe5]+$";
        /**
         * 结果
         *
         * 满足格式
         * 韩顺平教育
         */


        content = "韩顺平a教育";
        String regString = "^[\u0391-\uffe5]+$";
        /**
         * 结果
         *
         * 不满足格式
         *
         */




        Pattern pattern = Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        if (matcher.find()) {
            System.out.println("满足格式");
            System.out.println(matcher.group(0));
        }else {
            System.out.println("不满足格式");
        }

    }

    /**
     * 邮政编码
     * 要求:是1-9开头的一个六位数.比如: 123890
     *
     * @param
     * @return void
     * @date 2022/11/11 9:25
     * @author wty
     **/
    @Test
    public void homework02(){
        String content = "923890";

        // 邮政编码 要求:是1-9开头的一个六位数.比如: 123890
        String regString = "^[1-9]\\d{5}";

        /**
         * 结果
         *
         * 923890
         *
         */


        content = "023890";

        // 邮政编码
        regString = "^[1-9]\\d{5}";

        /**
         * 结果
         *
         * 空
         *
         */



        Pattern pattern = Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println(matcher.group(0));
        }

    }

    /**
     QQ号码
     要求:是1-9开头的一个(5位数-10位数)比如: 12389 , 1345687 , 187698765
     *
     * @param
     * @return void
     * @date 2022/11/11 9:25
     * @author wty
     **/
    @Test
    public void homework03(){
        String content = "1234567890";

        // 要求:是1-9开头的一个(5位数-10位数)比如: 12389 , 1345687 , 187698765
        String regString = "^[1-9]\\d{4,9}";


        Pattern pattern = Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println(matcher.group(0));
        }

    }


    /**
     手机号码
     要求:必须以13,14,15,18开头的11位数,比如13588889999
     *
     * @param
     * @return void
     * @date 2022/11/11 9:25
     * @author wty
     **/
    @Test
    public void homework04(){
        String content = "13588889999";

        // 要求:必须以13,14,15,18开头的11位数,比如13588889999
        String regString = "^1(?:3|4|5|8)\\d{9}$";
        // 等价于
        regString = "^1(3|4|5|8)\\d{9}$";


        Pattern pattern = Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println(matcher.group(0));
        }

    }

    /**
     URL: 如图: htpt//ww.bililico./video/BV1fh411y7R8?fro=search8iseid=1831060912083761326
     *
     * @param
     * @return void
     * @date 2022/11/11 9:25
     * @author wty
     **/
    @Test
    public void homework05(){
        String content = "https://www.bilibili.com/video/BV1fh411y7R8?p=894&spm_id_from=pageDriver&vd_source=aa478ca7c2fa47ecbea3237471050046";

        // 要求:URL: 如图:
        /**
         * 思路:
         * 1.先确定 url 的开头
         */
        String regString = "^(http(?:|s)://)((\\w)+\\.)+((\\w)+\\/)+((\\w)+(\\?)\\w)(\\=(\\w)+\\&(\\w)+)*(\\=\\w+)";
        content = "http://edu.3dsmax.tech/yg/bilibili/my6652/pc/qg/05-51/index.html#201211-1?track_id=jMc0jn-hm-yHrNfVad37YdhOUh41XYmjlss9zocM26gspY5ArwWuxb4wYWpmh2Q7GzR7doU0wLkViEhUlO1qNtukyAgake2jG1bTd23lR57XzV83E9bAXWkStcAh4j9Dz7a87ThGlqgdCZ2zpQy33a0SVNMfmJLSNnDzJ71TU68Rc-3PKE7VA3kYzjk4RrKU";
        content = "bilibili.com/video/BV1fh411y7R8?p=894&spm_id_from=pageDriver&vd_source=aa478ca7c2fa47ecbea3237471050046";

        // 按照老韩的方法写
        // [.=%] 注意:在中括号里写的特殊符号,就是符号本身
        regString = "^(http(?:|s)://)?((\\w+\\.)+(\\w+))?(\\/[(\\w+)-?=#.&]*)?$";

        Pattern pattern = Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println(matcher.group(0));
        }

    }


    /**
     *测试中括号里的特殊字符
     *
     * @param
     * @return void
     * @date 2022/11/11 9:25
     * @author wty
     **/
    @Test
    public void homework06(){
        String content = "hello. abc 111";

        // 匹配除了/n(换行)的所有字符
        String regString = ".";
        /**
         * 结果
         *
         * h
         * e
         * l
         * l
         * o
         * .
         *
         * a
         * b
         * c
         *
         * 1
         * 1
         * 1
         *
         *
         */


        // 中括号匹配.本身
        regString = "[.]";

        /**
         * 结果
         * .
         */


        // 匹配.本身
        regString = "\\.";

        /**
         * 结果
         * .
         */

        // 匹配?本身
        regString = "[?]";

        /**
         * 结果
         *
         */

        Pattern pattern = Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println(matcher.group(0));
        }

    }
}

正则表达式三个常用的类

正则表达式

Pattern类 的常用方法matches

Pattern类 的常用方法matches

package com.pattern.method;

import org.junit.Test;

import java.lang.reflect.ParameterizedType;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 只是验证某个子串是否满足规则的时候,可以这样使用
 *
 * @author wty
 * @date 2022/11/11 11:02
 */
public class PatternMethod {
    @Test
    public void patternMethod(){
        String content = "hello world hi ";
        String regStr = "world";

        // 返回整体匹配的效果
        boolean matches = Pattern.matches(regStr, content);
        System.out.println(matches);
        /**
         * 结果
         * false
         */

        // 以hello开头后面任意字符
        regStr = "hello.*";
        matches = Pattern.matches(regStr, content);
        /**
         * 源码
         *
         *     public static boolean matches(String var0, CharSequence var1) {
         *         Pattern var2 = compile(var0);
         *         Matcher var3 = var2.matcher(var1);
         *         return var3.matches();
         *     }
         */
        System.out.println(matches);
        /**
         * 结果
         * true
         */

    }
}

Matches类

Matches类

package com.matches.method;

import org.junit.Test;

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

/**Matches类的方法演示
 *
 * @author wty
 * @date 2022/11/11 11:18
 */
public class MatchesMethod {
    @Test
    public void matchesMethod(){
        String content = "hello edy jack tom smith hello hsp";
        String regStr = "hello";

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        /**
         * 结果
         * ============
         * 0 // h对应的索引
         * 5 // o对应的索引+1
         * hello
         * ============
         * 25
         * 30
         * hello
         *
         * Process finished with exit code 0
         */

        while (matcher.find()) {
            System.out.println("============");
            // 返回在以前的匹配操作期间,由给定组所捕获的子序列的初始索引
            System.out.println(matcher.start());
            // 返回最后匹配字符之后的偏移量。
            System.out.println(matcher.end());
            System.out.println(content.substring(matcher.start(),matcher.end()));
        }

        // 整体匹配,常用于校验某个子串是否满足某个规则
        boolean matches = matcher.matches();
        System.out.println("整体匹配"+matches);
        /**
         * 结果
         * false
         */


        regStr = "hello.*";
        pattern = Pattern.compile(regStr);
        matcher = pattern.matcher(content);

        matches = matcher.matches();
        System.out.println("整体匹配2"+matches);
        /**
         * 结果
         * true
         */
    }
}

Matcher类

package com.matches.method;

import org.junit.Test;

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

/**
 * @author wty
 * @date 2022/11/11 11:35
 */
public class MatchesMethod02 {
    @Test
    public void matchesMethod02(){
        String content = "hspeduayghoawghspeduoweg93993hspedu523257235hspedu993";
        String regStr = "hspedu";

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);

        // 返回的newContent,是替换后的字符串
        String newContent = matcher.replaceAll("韩顺平教育");

        System.out.println(newContent);


    }
}

分组、捕获、反向引用

提出需求

提出需求

介绍

介绍

案例

案例

package com.regexp;

import org.junit.Test;

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

/**
 * 反向引用
 *
 * @author wty
 * @date 2022/11/11 12:36
 */
public class RegexpExperience13 {
    @Test
    public void regexpExperience13(){
        String content = "33265336aa6634666663446";


        //        1.要匹配两个连续的相同数字:
        String regStr = "(\\d)\\1";
        /**
         * 结果
         * 找到 33
         * 找到 33
         * 找到 66
         * 找到 66
         * 找到 44
         *
         */

        //        2. 要匹配五个连续的相同数字:
        regStr = "(\\d)\\1{4}";
        /**
         * 结果
         * 找到 66666
         */

        //        3.要匹配个位与干位相同,十位与百位相同的数5225 , 1551
        content = "52254444";
        regStr = "(\\d)(\\d)\\2\\1";
        /**
         * 结果
         * 找到 5225
         * 找到 4444
         */

        // 请在字符串中检索商品编号形式如:12321-333999111这
        //样的号码,要求满足前面是一个五位数,然后一个-号,然后是
        //一个九位数,连续的每三位要相同
        content = "12321-333999111";
        regStr = "\\d{5}-(\\d)\\1{2}(\\d)\\2{2}(\\d)\\3{2}";



        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到 "+matcher.group(0));
        }
    }
}

经典的结巴程序

结巴程序

package com.regexp;

import org.junit.Test;

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

/**
 *
 * 把 类似 : "我....我要....学学学学....编程 java!";
 * 通过正则表达式 修改成 "我要学编程 java"
 * @author wty
 * @date 2022/11/11 14:37
 */
public class RegexpExperience14 {
    @Test
    public void regexpExperience13(){
        String content = "我....我要....学学学学....编程 java!";
        String regStr = "\\.";

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        String newContent = matcher.replaceAll("");
        System.out.println(newContent);
        /**
         * 结果:
         * 我我要学学学学编程 java!
         */

        // 去掉重复的字体
        regStr = "(.)\\1+";
        pattern = Pattern.compile(regStr);
        matcher = pattern.matcher(newContent);

        while (matcher.find()) {
            System.out.println(matcher.group(0));
        }

        // 用()内的单个字符替换,整个重复字符regStr
        String result = matcher.replaceAll("$1");
        System.out.println(result);
        /**
         * 我要学编程 java!
         */

    }

    /**
     * 使用单条语句实现去重
     *
     * @param
     * @return void
     * @date 2022/11/11 15:21
     * @author wty
     **/
    @Test
    @SuppressWarnings({"all"})
    public void regexpExperience14(){
        String content = "我....我要....学学学学....编程 java!";
        // 去掉所有的.
       String regStr = "\\.";
       Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        String newContent = matcher.replaceAll("");

        System.out.println(newContent);

        // 单条语句去重
        regStr = "(.)\\1+";
        String result = Pattern.compile(regStr).matcher(newContent).replaceAll("$1");
        System.out.println(result);

    }
}

#String类中使用正则表达式

替换功能

String类中使用正则表达式

package com.stringreg;

import org.junit.Test;

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

/**
 * String 类中使用正则表达
 * //使用正则表达式方式,将 JDK1.3 和 JDK1.4 替换成 JD
 *
 * @author wty
 * @date 2022/11/11 15:51
 */
public class StringReg {
    @Test
    public void stringReg(){
        String content = "2000年5月,JDK1.3、JDK1.4和J2SE1.3相继发布," +
                "几周后其获得了Apple公司MacOSX的工业标准的支持。2001年9月24日," +
                "J2EE1.3发布2002年2月26日,J2SE1.4发布。自此Java的计算能力有了大幅提升";
        使用正则表达式方式,将 JDK1.3 和 JDK1.4 替换成 JDK

        // 写法1:
        content = content.replaceAll("JDK1\\.(?:3|4)","JDK");
        // 写法2:
        content = content.replaceAll("JDK1\\.3|JDK1\\.4","JDK");

        System.out.println(content);
    }
}

判断功能

判断功能

package com.stringreg;

import org.junit.Test;

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

/**
 * 判断功能
 * @author wty
 * @date 2022/11/11 16:06
 */
public class StringReg02 {
    @Test
    public void stringReg(){
        //要求 验证一个 手机号, 要求必须是以 138 139 开头
        String content = "13811234453";

        // 方法一:
        boolean matches = content.matches("^13(?:8|9)\\d{8}");
        System.out.println(matches);
        // 方法二:
        matches = content.matches("13(8|9)\\d{8}");
        System.out.println(matches);
    }
}

分割功能

分割功能

package com.stringreg;

import org.junit.Test;

/**
 * 分割
 *
 * @author wty
 * @date 2022/11/11 16:16
 */
public class StringReg03 {
    @Test
    public void stringReg(){
        //要求 验证一个 手机号, 要求必须是以 138 139 开头
        String content = "hello#abc-jack12simith~北京";

        //要求按照 # 或者 - 或者 ~ 或者 数字 来分割

        String[] split = content.split("#|-|~");
        for (String s : split) {
            System.out.println(s);
        }
        /**
         * 结果
         * hello
         * abc
         * jack12simith
         * 北京
         *
         * Process finished with exit code 0
         */

    }
}

课后习题

习题1

习题1

package com.homework;

import org.junit.Test;

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

/**
 * @author wty
 * @date 2022/11/11 16:27
 */
@SuppressWarnings({"all"})
public class HomeWork02 {
    @Test
    public void homeWork(){
        String content = "wty@souhu.com.cn";
        String regString = "^(\\w|-)+@[a-zA-Z(\\.)?]+$";

        Pattern pattern = Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到:" + matcher.group(0));
        }

        // String 的matches 方法是整体匹配
        boolean matches = content.matches(regString);
        /**
         * 源码
         * String.class
         *     public boolean matches(String var1) {
         *         return Pattern.matches(var1, this);
         *     }
         *
         *     Pattern.class
         *         public static boolean matches(String var0, CharSequence var1) {
         *         Pattern var2 = compile(var0);
         *         Matcher var3 = var2.matcher(var1);
         *         return var3.matches();
         *     }
         *
         *     Pattern.class
         *        public Matcher matcher(CharSequence var1) {
         *         if (!this.compiled) {
         *             synchronized(this) {
         *                 if (!this.compiled) {
         *                     this.compile();
         *                 }
         *             }
         *         }
         *
         *         Matcher var2 = new Matcher(this, var1);
         *         return var2;
         *     }
         *
         *     Matcher.class
         *         Matcher(Pattern var1, CharSequence var2) {
         *         this.parentPattern = var1;
         *         this.text = var2;
         *         int var3 = Math.max(var1.capturingGroupCount, 10);
         *         this.groups = new int[var3 * 2];
         *         this.locals = new int[var1.localCount];
         *         this.reset();
         *     }
         */
        System.out.println(matches);
    }
}

习题2

习题2

package com.homework;

import org.junit.Test;

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

/**
 * @author wty
 * @date 2022/11/11 16:50
 */
public class HomeWork03 {
    @Test
    public void HomeWork(){
        // 思路:
        // 1.先写出简单的正则表达式
        // 2.再逐步根据情况完善表达式
        String content = "0.1123";
        // 数字开头是1-9 后面跟多个数字
        String regString = "^[-+]?(([1-9]\\d*)|0?)(\\.)?(\\d)*$";


        Pattern pattern = Pattern.compile(regString);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            System.out.println("找到:" + matcher.group(0));
        }

        boolean matches = content.matches(regString);
        System.out.println(matches);

    }
}

习题3

习题3

package com.homework;

import org.junit.Test;

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

/**
 * @author wty
 * @date 2022/11/11 17:18
 */
public class HomeWork04 {
    @Test
    public void HomeWork(){
        String url = "http://www.sohu.com:8080/abc/xxx/yyy/index.html";
        url = "http://www.sohu.com:8080/index.html";
        url = "http://www.sohu.com:8080/inde-~x@.html";

        String regStr = "^(\\w+)://((\\w+\\.?)+):((\\d)+)/(\\w+/+)*(\\w+\\.\\w+)$";
        regStr = "^(\\w+)://((\\w+\\.?)+):((\\d)+)/(\\w+/+)*([\\w.~@-]+)$";

        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(url);
        while (matcher.find()) {
            System.out.println("找到 " + matcher.group(0));
            System.out.println("协议 " + matcher.group(1));
            System.out.println("域名 "+ matcher.group(2));
            System.out.println("端口名 "+ matcher.group(4));
            System.out.println("文件名 "+ matcher.group(7));
        }
    }
}

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
韩顺平java》中的正则表达式专题课件是为了帮助学习者理解和掌握Java中的正则表达式知识而准备的教学资料。 正则表达式是一种用来描述、匹配和处理字符串的强大工具,它在文本处理、表单验证、数据提取等方面有着广泛的应用。讲解正则表达式的课件从基础开始,梳理了正则表达式的语法规则和常用的模式匹配符号,然后通过实例演示了如何使用正则表达式进行字符串的匹配、替换和提取等操作。 课件首先介绍了正则表达式的基本概念和使用场景,然后详细讲解了各种元字符、量词、字符类等在正则表达式中的作用和应用方法。同时,课件也提供了大量的实例来加深学习者的理解和应用能力。 在课程的实战部分,课件给出了一些常见的正则表达式应用场景,如匹配邮箱、手机号码、身份证号等。通过这些实例的讲解,学习者可以更好地掌握正则表达式的使用技巧和注意事项。 此外,课件还介绍了Java中的正则表达式API,包括Pattern类和Matcher类的使用方法,以及相关的常用方法和注意事项。学习者可以通过对这些API的学习和练习,进一步提升自己在正则表达式的应用能力。 总之,《韩顺平java》中的正则表达式专题课件通过详细讲解和实例演示,帮助学习者全面了解和掌握Java中的正则表达式知识,提升其在字符串处理方面的实际应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心向阳光的天域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值