Java 按要求爬取数据(?= ?! ?:)09
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
需求
有如下文本按要求爬取数据。
Java自从95年问世以来经历了很多版本目前企业中用的最多的是Java8和Java11因为这两个是长期支持版本下一个长期支持版本是Java17相信在未来不久Java17也会逐渐登上历史舞台。
需求1
爬取版本号为811.17的Java文本但是只要Java不显示版本号。
需求2
爬取版本号为81117的Java文本。正确爬取结果为Java8 Java11 Java17 Java17
需求3
爬取除了版本号为81117的Java文本。
代码示例
package com.liming;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo11 {
public static void main(String[] args) {
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());
}
}
}