0
点赞
收藏
分享

微信扫一扫

Java正则表达式4之爬取类型及切割字符串的两个方法

一:贪婪爬取与非贪婪爬取

贪婪爬取:简单来说就是在爬虫爬取数据的时候就是尽可能多的获取数据。

非贪婪爬取:与贪婪爬取相反,就是在爬取数据的时候尽可能少的获取数据。

在Java中,默认的就是贪婪爬取,如果在*或者+后面加上?就是非贪婪爬取。

二:举实例说明贪婪爬取与非贪婪爬取

先进行贪婪爬取

            Java正则表达式4之爬取类型及切割字符串的两个方法_正则表达式

运行结果如下;

            Java正则表达式4之爬取类型及切割字符串的两个方法_正则表达式_02

下面进行非贪婪爬取

            Java正则表达式4之爬取类型及切割字符串的两个方法_bc_03

            Java正则表达式4之爬取类型及切割字符串的两个方法_字符串_04

可以看出第一个贪婪爬取爬取的数据较多,第二种非贪婪爬取爬取的数据较少。

所有代码如下:

public static void main(String[] args) {

                   /* C++,bcdddddddddddddd是一种静态类型的、编译式的、通用的、大小写敏感的、
                   不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。
                   C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。

                                                         */


        //利用上述字符串来介绍贪婪爬取与非贪婪爬取
        //1.定义文本字符串即文本大串
        String s = "C++,bcccccccccccbbbbbb是一种静态类型的、编译式的、通用的、大小写敏感的." +
                "不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。" +
                "C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。";

        //先用默认的爬取方式
        String regex1 = "bc*";
        String regex2 = "bc*?";
        //2.创建正则表达式的对象
        Pattern p = Pattern.compile(regex1);

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

        //4.通过循环遍历得到结果
        while (m.find()) {
            String result = m.group();
            System.out.println(result);
        }


    }

三:切割字符串的方法

public String replaceAll(String regex,String newStr)     按照正则表达式的规则进行替换

public String[]  split(Sting regex); 按照正则表达式的规则切割字符串

举例说明:

有一段字符串:落霞与孤鹜齐飞,秋水共长天一色dqwefqwfqwfwq12312王勃dqwefqwfqwfwq12312滕王阁序

现在有两个需求

需求1:把字符串中文字之间的字母以及数字替换为-                      需求2:把字符串中的诗句和诗人名字及其诗题切割出来

1.先来完成需求1

            Java正则表达式4之爬取类型及切割字符串的两个方法_正则表达式_05

打印结果如下:

            Java正则表达式4之爬取类型及切割字符串的两个方法_字符串_06

2.完成需求2

            Java正则表达式4之爬取类型及切割字符串的两个方法_bc_07

打印结果如下

            Java正则表达式4之爬取类型及切割字符串的两个方法_bc_08

所有的代码如下,仅供参考:

 public static void main(String[] args){

                       /*public String replaceAll(String regex,String newStr)     按照正则表达式的规则进行替换
                       public String[]  split(Sting regex);                     按照正则表达式的规则切割字符串 */
                          //有一段字符串:落霞与孤鹜齐飞,秋水共长天一色dqwefqwfqwfwq12312王勃dqwefqwfqwfwq12312滕王阁序
                          //现在有两个需求
                          //需求1:把字符串中文字之间的字母以及数字替换为-
                          //需求2:把字符串中的诗句和诗人名字及其诗题切割出来

                         //1.定义字符串
                         String s = "落霞与孤鹜齐飞,秋水共长天一色dqwefqwfqwfwq12312王勃dqwefqwfqwfwq12312滕王阁序";
                         //2.利用replaceAll的方法进行切割,完成需求1
                         String result = s.replaceAll("[\\w&&[^_]]+","-");
                         //3.打印结果
                         System.out.println(result);


                         //2.利用split方法进行切割,完成需求2
                         String[] arr = s.split("[\\w&&[^_]]+");
                         //3.循环遍历得到结果
                       for (int i = 0; i < arr.length; i++) {
                           System.out.println(arr[i]);
                       }
 }

举报

相关推荐

0 条评论