爬虫(JAVA笔记第四十期)

p.s.这是萌新自己自学总结的笔记,如果想学习得更透彻的话还是请去看大佬的讲解

目录

正则表达式

正则表达式可以用来校验字符串是否满足一定的规则,并用来校验数据格式的合法性;也可以在一段文本中查找满足要求的内容

单字符的正则表达式看这里

一般来说,一个正则表达式由字符类和数量词合组成

举例

java 复制代码
        String str = "123456789";
        String str1 = "1234a56789";

        System.out.println(str.matches("[1-9]\\d{5,19}"));
        System.out.println(str1.matches("[1-9]\\d{5,19}"));

输出

java 复制代码
true
false

应用场景:用来对手机号码、身份证的格式验证

比如

java 复制代码
        //表示一个首位为1,第二位为3-9,其余10位为0-9的号码
        String regex1 = "1[3-9]\\d{9}";
        System.out.println("13345678901".matches(regex1));//true
        System.out.println("1334567890112".matches(regex1));//false
        System.out.println("=============");

        //座机号码
        //020-2333242 02122224 027-34344 0721-2343423
        //核心思路:在书写座机号正则表达式的时候需要把正确的数据分为三部分
        //一:    区号:0\\d{2,3}
        //二:    -?表示"-"次数,0次或1次
        //三:    号码:号码的第一位也不能以0开头
        String regex2 = "0\\d{2,3}-?[1-9]\\d{4,9}";
        System.out.println("020-2333242".matches(regex2));//true

爬虫

爬虫就是在一大段信息中获取自己想要的数据

举例

java 复制代码
package study.crawler;

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

public class Demo2 {
    public static void main(String[] args) {
        //爬取所有的"javaXX"
        String str = "java15是在java16之后出现的,所以肯定是java16功能更好。以此类推,java17功能肯定也比java16好";

        //Pattern类:表示正则表达式
        //Matcher类:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取。在大串中去找符合匹配规则的字串

        //获取正则表达式的对象
        Pattern p = Pattern.compile("java\\d{0,2}");

        //获取文本匹配器的对象
        Matcher m = p.matcher(str);

        //--------------------------------------------------

        //拿着文本匹配器从头开始读取,寻找是否有满足规则的字串
        //如果没有返回false
        //如果有返回true,在底层记录字串的起始索引和结束索引+1
        boolean b = m.find();

        //方法底层会根据find方法记录的索引进行字符串的截取
        //subString(起始索引,结束索引);包头不包尾
        //返回截取到的小串
        String s1 = m.group();
        System.out.println(s1);

        //第二次调用find方法的时候,会继续读取后面的内容
        //读取到第二个,满足要求的子串时,方法会继续返回true
        //并把第二个子串的起始索引和结束索引+1进行记录
        boolean b1 = m.find();
        String s2 = m.group();
        System.out.println(s2);

        //--------------------------------------------------

        //利用循环读取
        while (m.find()) {
            System.out.println(m.group());
        }

    }
}
相关推荐
蛋蛋的就会顺顺的5 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
需要8266 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
小 黄 鸡6 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
伯恩bourne8 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
silvamux_8 小时前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi
省钱兄--zs9 小时前
深圳24小时自助健身房软硬件解决方案实战指南与开发流程详解
java·数据仓库·spring boot·小程序·架构
顽疲9 小时前
Java vue 养老系统源码详解:月账单 care_month_bill 与 Quartz 扣费 Job 实践
java·开发语言·vue.js·vue养老·springboot养老·java养老
Wang's Blog9 小时前
Java 项目实战: 交友项目 - 安装开发工具与环境准备
java·开发语言·交友
用户21296835261689 小时前
开源了一个 Java 多智能体 LLM 框架 Baton:一个依赖,把 Agent 循环、工具调用、记忆、编排全配齐
java·llm
helmsail10 小时前
05 管理活动与选品
java