案例:
String str1 = "java自95年以来,经历了许多版本,现在用得最多的是Java8和JAVA11,因为这两个是长期支持的版本,相信在不久后JAVa17也会登上舞台";
//需求1:爬取版本号为8,11,17的Java文本,但是只要Java,不要版本号
//需求2:爬取版本为8,11,17的Java文本
//爬取除了版本号为8,11,17的Java文本
//1:定义正则表达式;
//?理解为前面的数据Java,=表示Java后面要跟随的数据,但是在获取时,只获取前半部分
//需求1:
String regex1 = "(?i)java(?=8|11|17)";
Pattern p = Pattern.compile(regex1);
Matcher m = p.matcher(str1);
while (m.find()) {
String group = m.group();
System.out.println(group);
}
//需求2:
//定义正则表达式
String regex2 = "(?i)java(8|11|17)";//方法1
String regex3 = "(?i)java(?:8|11|17)";//方法2;?理解为前面的数据Java,:表示Java后面要跟随的数据,但是在获取时,获取全部
Pattern compile = Pattern.compile(regex3);
Matcher matcher = compile.matcher(str1);
while (matcher.find()) {
String group = matcher.group();
System.out.println(group);
}
//定义正则表达式
String regex4 = "(?i)java(?!8|11|17)";//?理解为前面的数据Java,!表示Java后面要去除的数据,但是在获取时,获取全部
Pattern p2 = Pattern.compile(regex4);
Matcher m2 = p2.matcher(str1);
while (m2.find()) {
String group = m2.group();
System.out.println(group);