-
字符串对象提供了匹配正则表达式的API:
// 判断是否匹配正则表达式,匹配则返回true public boolean matches(String regex);
-
Java正则表达式规则:
单个字符:
0 只能是0
[0-9] 只能是0到9中的其中一个
[^abc] 除abc外的任何字符
[a-zA-Z] 只能是其中一个,下同
[0-9a-zA-Z_]
[a-z&&[^a]] 取交集,a-z且不能是a,即b-z
预定义好的字符类(同样默认匹配一个字符,需要转义):
. 任何字符
\d 一个数字:[0-9]
\D 一个非数字:[^0-9]
\s 一个空白字符:[\t\n\x0B\f\r]
\S 一个非空白字符:[^\s]
\w 单词字符:英文数字下划线:[a-zA-Z_0-9]
\W 一个非单词字符:[^w]
量词(跟在上述字符后面):
? 一次或0次
* 0次或多次
+ 一次或多次
{n} 只能正好n次
{n,} 最少n次
{,m} 最多m次
{n,m} 至少n次但不超过m次
示例:
str.matches("\\w");
str.matches("[\\d{3}");
str.matches("\\w+");
str.matches("[\\w]+");
str.matches("[\\w&&[^_]]+"); // && 后面必须加下划线
正则表达式爬虫
示例:
String str = "要爬取的内容";
// 定义爬取规则
String regex = "正则表达式规则";
// 编译正则表达式成为一个匹配规则对象
// 即将规则翻译为匹配规则对象,compile:翻译
Pattern pattern = Pattern.compile(regex);
// 通过匹配规则对象得到一个匹配内容数据的匹配器对象
Matcher matcher = pattern.matcher(str);
// 通过匹配器去内容中爬取出信息
while (matcher.find()){
System.out.println(matcher.group());
}