正则表达式
一、基本规则
二、带条件爬取
public class Test1 {
public static void main(String[] args) {
String str = "JaVa8JAva11java10Java9";
/*获取Java后面为8或者10或者11的,但是只显示Java*/
String regex = "Java(?=8|10|11)";
/*获取Java后面为8或者10或者11的,并且无视java大小写,最终只显示Java*/
regex = "((?i)Java)(?=8|10|11)";
/*获取Java后面为8或者10或者11的,并且无视java大小写,最终显示所有的Java和后面的数字*/
regex = "((?i)Java)(?:8|10|11)";
/*获取Java后面不为8或者10或者11的,并且无视java大小写,最终只显示Java*/
regex = "((?i)Java)(?!8|10|11)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}
}
}
三、贪婪爬取和非贪婪爬取
默认是贪婪爬取,非贪婪爬取只需要在数量词后面加上问号就可以了
public class Test1 {
public static void main(String[] args) {
String str = "abbbbbbbbbbbbbbbbbbbbbb";
String regex = "ab+?";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}
}
}
四、捕获分组和非捕获分组
1、三个例子
2、捕获分组的基本规则
3、在外部使用捕获的分组
4、非捕获分组
非捕获分组不会占用组号!!