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

一、定义

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

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

二、本地爬虫VS网络爬虫

2-1、本地爬虫

示例:

代码优化:

java 复制代码
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非贪婪爬取

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

示例:

示例:

java 复制代码
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方法

相关推荐
【JAVA】玩家1 小时前
Spring核心原理全解析:从零到生产实战
java·后端·spring
Wang's Blog2 小时前
Java框架 SpringCloud 快速入门: 实现 Feign 最佳实践(抽取方式)
java·spring cloud
MandalaO_O2 小时前
IDEA 开发(快捷键 + 调试 + 序列化)
java·ide·intellij-idea
xiaoqiMikko3 小时前
JVM 线上排查实战(七):jps 看不见它、jstack 连不上它,可它明明活得好好的
java·jvm
狼爷4 小时前
Rust/Go/Java/Python/PHP 大比拼:负载下后端框架到底差多少?
java·后端·编程语言
念何架构之路4 小时前
zap扩展生态与总结
java·前端·数据库
第七页独白5 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库
QCoding5 小时前
Spring AI Alibaba Graph实战:从ReAct Agent到Workflow,企业AI复杂流程该如何编排?
java·人工智能
用户094248568035 小时前
第25章:Java虚拟线程(Project Loom)实战与调度协作
java·jvm
砚底藏山河5 小时前
量化实战:截面因子有效性检验(IC 分析与分层回测)
java·python·金融·maven