File size: 1,686 Bytes
0284885
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package Reptile_package;

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

public class Reptile_demo3 {
    public static void main(String[] args) {
        /*有如下文本,请按照要求爬取数据:
        java自从95年问世以来,经历了很多版本,目前企业中用的最多的是java8和java11,
            因为这两个是长期支持版本,下一个长期支持版本是java17,相信在未来不久java17也会逐渐登上历史舞台。

        需求1:爬取版本号为8,11,17的java文本,但是只要java,不显示版本号。
        需求2:爬取版本号为8,11,17的java文本。正确爬取结果为:java8,java11,java17,java17
        需求3:爬取除了版本号为8,11,17的java文本
         */

        String s = "java自从95年问世以来,经历了很多版本,目前企业中用的最多的是java8和java11," +
                "因为这两个是长期支持版本,下一个长期支持版本是java17,相信在未来不久java17也会逐渐登上历史舞台。";

        //1、定义正则表达式
        // ?理解为前面的数据java
        // =表示在java后面要跟随的数据
        //但是在获取的时候,只获取前半部分
        //需求1:
        String regex1 = "((?i)java)(?=8|11|17)";
        //需求2:
        String regex2 = "((?i)java)(8|11|17)";
        String regex3 = "((?i)java)(?:8|11|17)";
        //需求3:
        String regex4 = "((?i)java)(?!8|11|17)";

        Pattern p = Pattern.compile(regex4);
        Matcher m = p.matcher(s);
        while (m.find()) {
            System.out.println(m.group());
        }

    }
}