p.s.这是萌新自己自学总结的笔记,如果想学习得更透彻的话还是请去看大佬的讲解
目录
- 正则表达式
- 爬虫
正则表达式
正则表达式可以用来校验字符串是否满足一定的规则,并用来校验数据格式的合法性;也可以在一段文本中查找满足要求的内容
单字符的正则表达式看这里
一般来说,一个正则表达式由字符类和数量词合组成
举例
String str = "123456789";
String str1 = "1234a56789";
System.out.println(str.matches("[1-9]\\d{5,19}"));
System.out.println(str1.matches("[1-9]\\d{5,19}"));
输出
true
false
应用场景:用来对手机号码、身份证的格式验证
比如
//表示一个首位为1,第二位为3-9,其余10位为0-9的号码
String regex1 = "1[3-9]\\d{9}";
System.out.println("13345678901".matches(regex1));//true
System.out.println("1334567890112".matches(regex1));//false
System.out.println("=============");
//座机号码
//020-2333242 02122224 027-34344 0721-2343423
//核心思路:在书写座机号正则表达式的时候需要把正确的数据分为三部分
//一: 区号:0\\d{2,3}
//二: -?表示"-"次数,0次或1次
//三: 号码:号码的第一位也不能以0开头
String regex2 = "0\\d{2,3}-?[1-9]\\d{4,9}";
System.out.println("020-2333242".matches(regex2));//true
爬虫
爬虫就是在一大段信息中获取自己想要的数据
举例
package study.crawler;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo2 {
public static void main(String[] args) {
//爬取所有的"javaXX"
String str = "java15是在java16之后出现的,所以肯定是java16功能更好。以此类推,java17功能肯定也比java16好";
//Pattern类:表示正则表达式
//Matcher类:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取。在大串中去找符合匹配规则的字串
//获取正则表达式的对象
Pattern p = Pattern.compile("java\\d{0,2}");
//获取文本匹配器的对象
Matcher m = p.matcher(str);
//--------------------------------------------------
//拿着文本匹配器从头开始读取,寻找是否有满足规则的字串
//如果没有返回false
//如果有返回true,在底层记录字串的起始索引和结束索引+1
boolean b = m.find();
//方法底层会根据find方法记录的索引进行字符串的截取
//subString(起始索引,结束索引);包头不包尾
//返回截取到的小串
String s1 = m.group();
System.out.println(s1);
//第二次调用find方法的时候,会继续读取后面的内容
//读取到第二个,满足要求的子串时,方法会继续返回true
//并把第二个子串的起始索引和结束索引+1进行记录
boolean b1 = m.find();
String s2 = m.group();
System.out.println(s2);
//--------------------------------------------------
//利用循环读取
while (m.find()) {
System.out.println(m.group());
}
}
}