正则表达式(爬虫)

  1. Pattern表示正则表达式
  2. matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,重头开始读取,在大串中去寻找字串
  3. 案例:
      String s = "java带安抚阿富汗发货 爱的哈佛哈hi氟化物 哇大负荷和慰问活动iava17,java18,wdwdjava19";
    //Pattern表示正则表达式
    //matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,重头开始读取,在大串中去寻找字串

    //Pattern p = Pattern.compile("java\\d{0,2}");//获取正则表达式
    //获取文本匹配器的对象,m表示文本匹配器对象,s表示大串,p表示规则
    //m要在s中寻找符合p规则的小串
    // Matcher m= p.matcher(s);
    //拿着文本匹配器去重头开始读取,寻找符合规则的子串,有则返回true,在底层记录起始索引和结束索引+1没有返回false
    // boolean b = m.find();
    //方法底层会根据find方法记录的索引进行字符串的截取
    //subString(起始索引,结束索引);包头不包尾
    //(0,4),不包括4,最后把截取到的小串返回
    // String group = m.group();
    //System.out.println(group);
    //再次调用,理由同上
    //b=m.find();
    //String group1 = m.group();
    // System.out.println(group1);
    //强化
    Pattern p= Pattern.compile("java\\d{0,2}");
    Matcher m = p.matcher(s);
    while (m.find()){
    String group2 = m.group();
    System.out.println(group2);
  4. 贪婪爬取:只写+或者*表示贪婪匹配,在Java中默认贪婪爬取,表示尽可能多获取数据
  5. 非贪婪爬取:只写+?或者*?表示非贪婪匹配,表示尽可能少的获取数据
  6. 案例:
    String str1 = "java自95年以来,经历了许多版本,abbbbbbbbbbbbbbbbaaaaaaaaa现在用得最多的是Java8和JAVA11,因为这两个是长期支持的版本,相信在不久后JAVa17也会登上舞台";
    String regex= "ab+";//贪婪爬取:abbbbbbbbb
    String regex2= "ab";//非贪婪爬取:ab
    Pattern compile = Pattern.compile(regex);
    Matcher matcher = compile.matcher(str1);
    while (matcher.find()){
    String group = matcher.group();
    System.out.println(group);
    }
    Pattern compile1 = Pattern.compile(regex2);
    Matcher matcher1 = compile.matcher(str1);
    while(matcher.find()){
    String group = matcher.group();
    System.out.println(group);
    }
  7. 识别正则表达式

     

  8. 案例:
    //有一段字符串 :小思思adad2w342小丹丹wadam2442小蛋蛋
    //需求1:把字符串中3个姓名之间的字母和数字替换为vs
    //需求2:把字符串中的3个姓名分割出来
    String str ="小思思adad2w342小丹丹wadam2442小蛋蛋";
    //方法在底层跟之前一样,也会创建文本解析器对象,然后重头开始去读取字符串中的内容,如果有满足的,则用第二个参数去替换
    String vs = str.replaceAll("[\\w&&[^_]]+", "vs");
    System.out.println(vs);
    //需求2:
    String[] split = str.split("[\\w&&[^_]]+");
    for (int i = 0; i <split.length ; i++) {
    System.out.println(split[i]);

    }
posted @   为zq  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示