本地爬虫
public static void main(String[] args) {
//正则表达式对象 Pattern
//文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取
// 在大串中找符合规则的字串 Matcher
String str = "Java语言是Sun公司于1990年开发的;1994年,Gosling用Java7语言开发了一个实用性较高、可靠、安全、有交互功能的新型Web浏览" "器,它不依赖与任何硬件平台和软件平台,该浏览器被命名为HotJava,并于1995年在业界发表,引起了巨大的轰动,Java61语言的地位随之得到了肯定;1995年5月23日,JDK(Java8 Developmenr Kit)1.0a2版本正是对外发布;2009年4月20日,Sun公司被Oracle公司收购。";
//获取正则表达式的对象
Pattern p = Pattern.compile("Java\\d{0,2}");
//获取文本匹配器的对象
//m:文本匹配器对象
//p:规则
//str 大串
//m需要在str中寻找符合p的小串
Matcher m = p.matcher(str);
//运用循环
while (m.find()){
String s = m.group();
System.out.println(s);
}
/*
//拿着文本匹配器从头开始读取,寻找是否又满足的字串
//没有返回false
//有返回true,在底层记录子串的起始索引 和 结束索引+1
boolean b = m.find();
//方法底层会根据find方法记录的索引进行字符串的截取
//subString(起始索引,结束索引);包头不包尾。
String s1 = m.group();
System.out.println(s1);
//第二次调用find的时候,会继续读取后面的内容
//读取刀第二个满足的字串,会返回true
//并把第二个字串的起始索引和结束索引+1记录
b = m.find();
String s2 = m.group();
System.out.println(s2);
*/
}
带条件的爬取
public static void main(String[] args) {
String str = "Java语言是Sun公司于1990年开发的;1994年,Gosling用JaVa8语言开发了一个实用性较高、可靠、安全、有交互功能的新型Web浏览" +
"器,它不依赖与任何硬件平台和软件平台,该浏览器被命名为HotJava,并于1995年在业界发表,引起了巨大的轰动,JAVa11语言的地位随之得" +
"到了肯定;1995年5月23日,JDK(JAVA17 Developmenr Kit)1.0a2版本正是对外发布;2009年4月20日,Sun公司被Oracle公司收购。";
//爬取不区分大小写的并且带版本号的Java,但是只返回前半部分
String regex1="((?i)Java)(?=8|11|17)";
//爬取不区分大小写的并且带版本号的Java,全部返回
String regex2="((?i)Java)(?:8|11|17)";
//爬取不区分大小写的并且不带版本号的
String regex3="((?i)Java)(?!8|11|17)";
Pattern pattern = Pattern.compile(regex3);
Matcher matcher = pattern.matcher(str);
while (matcher.find()){
System.out.println(matcher.group());
}
贪婪爬取:在爬取数据的时候,尽可能的多获取数据
非贪婪爬取:在爬取数据的时候,尽可能的少获取数据
Java当中默认贪婪爬取,如果我们在数量词+ *的后面加上问号,那么此时就是非贪婪爬取。
String s="abbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaa";
String regex1="ab+";//贪婪爬取:abbbbbbbbbbbbbbbbbb
String regex2="ab+?";//非贪婪爬取:ab
Pattern p = Pattern.compile(regex1);
Matcher m = p.matcher(s);
while (m.find()){
System.out.println(m.group());
正则表达式在字符串方法中的使用
public String replaceAll(String regex,String newStr) 按照正则表达式的规则进行替换
public String[] split(String regex) 按照正则表达式的规则切割字符串
public static void main(String[] args) {
String s="弱智asdasndjiashdkjas1111123bndiu脑瘫asdasndjia1241245shdkjasbndiu低能";
//细节:
//方法在底层也会创建文本解析器的对象
//然后从头开始去读取字符串中的内容,只要有满足的就用第二个参数去替换
String result = s.replaceAll("[\\w&&[^_]]+", "vs");
System.out.println(result);
String[] split = s.split("[\\w&&[^_]]+");
for (int i = 0; i < split.length; i++) {
System.out.println(split[i]);
}










