当前位置: 首页 > article >正文

java基础概念37:正则表达式2-爬虫

一、定义

【回顾】正则表达式的作用

  • 作用一:校验字符串是否满足规则
  • 作用二:在一段文本中查找满足要求的内容——爬虫

二、本地爬虫VS网络爬虫 

2-1、本地爬虫

示例:

代码优化:

public static void main(String[] args) {
        // 大串
        String str = "Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久|ava17也会逐渐登上历史舞台";

        // 获取正则表达式对象
        Pattern p = Pattern.compile("Java\\d{0,2}");
        // 获取文本匹配去对象
        Matcher m = p.matcher(str);

        while (m.find()){
            String s1 = m.group();
            System.out.println(s1);
        }

    }

2-2、网络爬虫

示例:

三、带条件爬取VS贪婪爬取VS非贪婪爬取

 3-1、带条件爬取

示例:

?=:意味着它用于匹配一个位置,该位置后面的字符序列能够匹配一个特定的模式,但本身不消耗任何字符。

3-2、贪婪爬取VS非贪婪爬取

  • 贪婪爬取:在爬取数据的时候尽可能的多获取数据;
  • 非贪婪爬取:在爬取数据的时候尽可能的少获取数据。

示例:

示例:

public static void main(String[] args) {
        String str = "Java自从95年问世以来,abbbbbbbbbbbbaaaaaaaaaaaaaaaaaa经历了很多版本,目前企业中用的最多的是!ava8和Java11,因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";

        // 贪婪爬取
        String regex = "ab+";

        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(str);
        while (m.find()){
            // abbbbbbbbbbbb
            System.out.println(m.group());
        }

        // 非贪婪爬取
        String regex2 = "ab+?";
        Pattern p2 = Pattern.compile(regex2);
        Matcher m2 = p2.matcher(str);
        while (m2.find()){
            // ab
            System.out.println(m2.group());
        }
    }

四、正则表达式在字符串方法中的使用

4-1、replaceAll方法

4-2、split方法


http://www.kler.cn/a/406710.html

相关文章:

  • JDBC 批量调用数据库 SQL, 函数与存储过程
  • GreatSQL 运行时内存太高,超过90%怎么办
  • 刷题日常(数据流中的中位数,逆波兰表达式求值,最长连续序列,字母异位词分组)
  • 调用 AWS Lambda 时如何传送字节数组
  • idea怎么打开两个窗口,运行两个项目
  • 道品智能科技移动式水肥一体机:农业灌溉施肥的革新之选
  • Xilinx 7 系列 FPGA的各引脚外围电路接法
  • SMO算法-核方法支持向量机
  • HTML常用表格与标签
  • 经典 AEC 论文解读
  • 基础自动化系统的任务
  • HTMLCSS:3D立方体loading
  • Vue3-小兔鲜项目出现问题及其解决方法(未写完)
  • 解决 Git 默认分支不一致问题:最佳实践与解决方案20241120
  • Zmap+python脚本+burp实现自动化Fuzzing测试
  • 【MySQL】避免执行SQl文件后自动转化表名为小写字母
  • 查手机号归属地免费API接口教程
  • R语言绘图过程中遇到图例的图块中出现字符“a“的解决方法
  • 基于单片机的煤气泄漏控制器设计
  • C++ —— string类(上)
  • MATLAB 2024a安装包下载及安装教程
  • 开发 + 安全:网络安全的协作方法
  • 概念解读|K8s/容器云/裸金属/云原生...这些都有什么区别?
  • 分布式锁的实现,基于Redis实现分布式锁
  • MySQL4 内置函数(一)- 时间函数
  • 面试小札:Java的类加载过程和类加载机制。