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

爬虫(JAVA笔记第四十期)

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

目录

  • 正则表达式
  • 爬虫

正则表达式

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

在这里插入图片描述

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

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

举例

        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}"));

输出

true
false

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

        //表示一个首位为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

爬虫

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

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());
        }

    }
}

在这里插入图片描述


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

相关文章:

  • 复习动态规划入门
  • 详解Redis的Zset类型及相关命令
  • 双目立体校正和Q矩阵
  • 常见的加密方式以及自定义加密工具
  • 【C++图论 并集查找】2492. 两个城市间路径的最小分数|1679
  • 【深度学习入门】深度学习知识点总结
  • Win10安装kafka并用C#调用
  • Qt源码阅读(六) ⏱️QTimer
  • 【成功解决】:VS2019(Visual Studio 2019)遇到E2870问题:此配置中不支持 128 位浮点类型
  • 【计算机网络】实验13:运输层端口
  • k8s中镜像导出的报错 not found
  • 【Django】在view中调用channel来主动进行websocket通信
  • 什么是数据架构?
  • 卸载windows
  • 第四节、电机定角度转动【51单片机-TB6600驱动器-步进电机教程】
  • 深入解析二叉树算法
  • 开源之夏 2024 KubeSphere 社区项目总结
  • 注意力机制介绍
  • Windows 中将某个安装文件安装到指定目录
  • 机器学习之Nemenyi检验
  • 模型优化与迁移学习
  • [NSSRound#7 Team]ec_RCE
  • 海外的bug-hunters,不一样的403bypass
  • DR、HIS、PACS的交互,以及与其他软件系统之间的交互
  • Python学习(一)—— 编程环境安装
  • 动手学深度学习-线性神经网络-1线性回归