正则表达式的作用:
1.校验字符串是否满足一定的规则
2.在一段文本中查找满足要求的内容
正则表达式:一个字符串,带匹配的字符串需要调用.matches(regrex)获得匹配结果
字符类:
[abc]:只能是a,b,c
[^abc]:除了a,b,c以外的任何字符
[a-zA-Z]:a到z,A到Z,包括
[a-d[m-p]]:a到d或者m到p
[a-z&&[def]]:a-z与def的交集
[a-z&&[^bc]]:a-z和非bc的交集
[a-z&&[^m-p]]:a到z和非m到p的交集
如果要表示两个范围的交集,需要写符号&&
如果写成了一个&,那么此时&表示的是只是一个简单的&符号
预定义字符:
.:任意字符
\\d:一个数字
\\D:非数字
\\s:一个空白字符,[\t\n\x0B\f\r]
\\S:非空白字符
\\w:英文、数字、下划线
\\W:一个非单词字符
[]:里面的内容出现一次
():分组
^:取反
&&:取交集,不能写单个的&
|:写在方括号外面表示并集
(?i):忽略后面的大小写
数量词:
?:一次或0次
*:零次或多次
+:一次或多次
{n}:正好出现n次
{n,}:至少出现n次
{n,m}:至少出现n次但不超过m次
爬虫:
Pattern:表示正则表达式
Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取,在大串中寻找符合匹配规则的子串
Pattern p = Pattern.compile(regrex);
获取regrex对应的文本匹配器的对象
Matcher m = p.matcher(大串);
拿着文本匹配器从头开始读取,寻找是否有满足规则的子串,如果没有,则返回false,如果有,则返回true,在底层记录子串的起始索引和结束索引+1
boolean b = m.find();
while(m.find()){
String s = m.group();
}
带有条件的数据爬取:
贪婪爬取:在爬取数据时尽可能的多获取数据
在java中默认是贪婪爬取,如果在数量词后面加上?,此时就表示非贪婪爬取
非贪婪爬取:在爬取数据时尽可能少获取数据
正则表达式在字符串中的使用:
public String[] matches(String regex):判断字符串是否满足正则表达式的规则
public String replaceAll(String regex,String newStr):按照正则表达式的规则进行替换
public String[] split(String regex):按照正则表达式的规则切割字符串
正则表达式中()每组是有组号的,也就是序号
规则1:从1开始,连续不间断
规则2:以左括号为基准,最左边是第一组,其次为第二组,以此类推
\\组号:把对应租号中的内容提出来,再使用一次