正则表达式

正则表达式

基本格式

1.单个字符匹配规则

正则表达式规则
.任何字符
\d一个数字
\D一个非数字
\s一个空白字符
\S一个非空白字符
\w英文,数字,下划线
\W一个非单词字符

2.复杂字符匹配规则

正则表达式规则
[abc]只能说abc
[^abc]除了abc
[a-zA-Z]a到z,A到Z
[a-z&&[^bc]]a到z中除了bc
a-z&&[^m-p]]a到z中除了m到p

3.表示数量的匹配规则

正则表达式规则
X?X,一次或0次
X*任意次数
X+一次或多次
X{n}正好n次
X{n,}至少n次
X{n,m}至少n次但是不超过m次

4.当某一正则需要多次使用,我们可以小括号括起来进行操作。

举例子:关于邮箱正则:

1736331172@qq.com
zhangsan@xinan.com
1736331172@itcased.qq.com

String regex = "\\w+[@][\\w&&[^_]]+(\\.[a-z]{2,3})+";

验证是否符合正则表达式

我们使用matches方法验证

String regex = "\\w+[@][\\w&&[^_]]+(\\.[a-z]{2,3})+";

boolean bool = "1736331172@itcased.qq.com".matches(regex);//true

String类中关于正则地方法

方法说明
public String replaceAll (String regex,String newstr)将满足正则地字符穿替换为新字符串
public String[] split(String regex)按照正则分割字符串,并且返回新的字符串

使用正则表达式进行爬虫

Pattern专门对正则进行封装的类

两个关键方法:

方法作用
public static compile (String regex)将给定的正则表达式封装
matcher(输入爬取的对象)获取匹配器对象
String s = "我的邮箱是1736331172@qq.com"+
			"他的邮箱是zhangsan@xinan.com"+
			"老师的邮箱是1736331172@itcased.qq.com";
			
String regex = "\\w+[@][\\w&&[^_]]+(\\.[a-z]{2,3})+";

//1.将给定的正则表达式封装
Pattern pattern = Pattern.compile(regex);

//2.获取匹配器对象
Macher macher = pattern.matcher(s);

接下来用Macher类中find方法确定爬取目标,group方法进行提取。

while(matcher,find()){

	 System.out.println(matcher.group());
	 
}
/*
抛出结果
1736331172@qq.com
zhangsan@xinan.com
1736331172@itcased.qq.com
 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值