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

Java学习笔记Day14

爬虫

  • Pattern:表示正则表达式
  • Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取。子啊大串中去找符合匹配规则的子串。
// 1.获取正则表达式的对象
Pattern p = Pattern.compile("Java\\d{0,2}");// 2.获取文本匹配器的对象 拿着m去读取str,找符合规律的子串
Matcher m = p.matcher(str);// 3.利用循环获取
while(m.find()){String s = m.group();System.out.println(s);
}
  • 贪婪爬取:在爬取数据的时候尽可能多的获取数据
  • 非贪婪爬取:在爬取数据的时候尽可能少的获取数据
  • Java中默认的就是贪婪爬取,如果我们在数量词+ * 的后面加上 问号,那么此时就是非贪婪爬取
String s = "abbbbbbbbbbbbbbbcc";
String regex = "ab+";// 贪婪
String regex = "ab+?";// 非贪婪Patern p = Patern.compile(regex);
Matcher m = p.matcher(s);while(m.find()){System.out.println(m.group())
}

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

方法名说明
public String[] matches(String regex)判断字符串是否满足正则表达式的规则
public String replaceAll(String regex,String newStr)按照正则表达式的规则进行替换
public String[] split(String regex)按照正则表达式的规则切割字符串
  • replaceALL细节
    • 方法在底层跟之前一样也会创建文本解析器的对象
    • 从头开始去读字符串中的内容,只要有满足的,那么就用第二个参数去替换。

分组

每组是有组号的,也就是序号

  • 规则一:从1开始,连续不间断
  • 规则二:以左括号为基准,最左边的是第一组,其次是第二组,以此类推

捕获分组练习

  • 需求一:判断一个字符串的开始字符和结束字符是否一致?只考虑一个字符

    • 举例:a123a b456b c789c

    • // \\组号:表示把第x组的内容再出来用一次
      String regex1 = "(.).+\\1";
      
  • 需求二:判断一个字符串的开始部分和结束部分是否一致?可以有多个字符

    • 举例:abc123abc b456b 123789123

    • String regex2 = "(.+).+\\1"
      
  • 需求三:判断一个字符串的开始部分和结束部分是否一致?开始部分内部每个字符也需要一致

    • 举例:aaa123aaa bbb456bbb 111789111

    • // (.):把首字母看作一组
      // \\2:把首字母拿出来再次使用
      // * :作用于\\2表示后面重复的内容出现0次或者多次
      String regex3 = "((.)\\2*).+\\1";
      

捕获分组和非捕获分组

  • 捕获分组

    • 后续还要继续使用本组的数据
    • 正则内部使用: \\组号
    • 正则外部使用: $组号
  • 非捕获分组

    • 分组之后不需要再用本组数据,仅仅是把数据括起来

    • 符号含义举例
      (? : 正则)获取所有Java(?:8|11|17)
      (? = 正则)获取前面部分Java(? = 8|11|17)
      (? ! 正则)获取不是指定内容的前面部分Java(? ! 8|11|17)
http://www.dtcms.com/a/438140.html

相关文章:

  • C++进阶(4)——C++11右值引用和移动语义
  • 从入门到精通【Redis】理解Redis主从复制
  • 公司网站不备案wordpress地址怎么打开
  • 柯西显威:一道最值题的降维打击
  • Java 集合 “Map(2)”面试清单(含超通俗生活案例与深度理解)
  • 网站怎么做悬浮图片放大带后台的网站模板下载
  • java学习:四大排序
  • npm install 中的 --save 和 --save-dev 使用说明
  • 个人网站欣赏h5网站和传统网站区别
  • Inception V3--J9
  • Spring——编程式事务
  • 如何比较两个目录档案的差异
  • 美发店收银系统教程
  • wordpress网站怎么打开对于高校类建设网站的要求
  • 理解神经网络流程
  • 2025年渗透测试面试题总结-99(题目+回答)
  • Linux启动流程与字符设备驱动详解 - 从bootloader到驱动开发
  • 探讨区块链与生物识别技术融合的安全解决方案
  • 手机应用商店app下载官方网站下载建设厅网站技术负责人要求
  • 电子商务网站开发过程论文6保定网站建设哪家好
  • Lua语法
  • stm32摇杆adc数据分析
  • 公司网站开发费用如何做账网站三合一建设
  • MySQL 进阶知识点(十二)---- 管理
  • C/C++贪吃蛇小游戏
  • 【Linux】多线程创建及封装
  • 苏州网站推广公司创业商机网餐饮
  • unity 读取PPT显示到屏幕功能
  • Django - 让开发变得简单高效的Web框架
  • C# 判断语句详解