File size: 2,277 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package Reptile_package;

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

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

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

        //method1(str);

        //1、获取正则表达式的对象
        Pattern p = Pattern.compile("java\\d{0,2}");

        //2、获取文件匹配器的对象
        //拿着m去读取str,找符合p规则的子串
        Matcher m = p.matcher(str);

        //3、利用循环获取
        while (m.find()) {
            String s = m.group();
            System.out.println(s);

        }
    }

    private static void method1(String str) {
        //Pattern:表示正则表达式
        //Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读
        //在大串中去找符合匹配规则的子串

        //获取正则表达式的对象
        Pattern p = Pattern.compile("java\\d{0,2}");
        //获取文件匹配器的对象
        //m:文本匹配器的对象
        //str:大串
        //p:规则
        //m要在str中找符合p规则的小串
        Matcher m = p.matcher(str);

        //拿着文本匹配器从头开始读取,寻找是否有满足规则的子串
        //如果没有,方法返回false
        //如果有,返回true。在底层记录子串的起始索引和结束索引+1
        boolean b = m.find();

        //方法的底层会根据find方法记录的索引进行字符串的截取
        //sunString(起始索引,结束索引);包头不包尾
        String s1 = m.group();
        System.out.println(s1);

    }


}