在项目中,当采用Jsoup从其它网页抓取来源码,常常需要选择性解析其中的内容,这时,采用正则捕获,不失为一种简便的方式。
Pattern p = Pattern.compile("\\[(\\d{4})年(\\d{2})月(\\d{2})日\\]");
String str = "[2019年01月08日]";
Matcher matcher = p.matcher(str);
if(matcher.find()){
System.out.println(matcher.group(1));//2019
System.out.println(matcher.group(2));//01
System.out.println(matcher.group(3));//08
}
matcher.group(0)默认匹配整个字符串。
String st = "[ 字体: 时间: 2019-01-16 来源: 甘肃日报 ]";
Pattern p3 = Pattern.compile("\\[(?:[\\s\\S]*)(时间[\\s\\S]*)\\]");
Matcher matcher2 = p3.matcher(st);
if(matcher2.find()){
System.out.println(matcher2.group(1));//时间: 2019-01-16 来源: 甘肃日报
}
String st2 = "发布时间:2019年01月15日 22:44 来源:求是 编辑:石光辉";
Pattern p4 = Pattern.compile("(?:[\\s\\S]*)(\\d{4})年(\\d{2})月(\\d{2})日.*");
Matcher matcher3 = p4.matcher(st2);
if(matcher3.find()){
String tim = matcher3.group(1)+"-"+matcher3.group(2)+"-"+matcher3.group(3);//2019-01-15
System.out.println(tim);
}
\s\S匹配所有字符,包括空格。
?: 匹配但不捕获。