正则表达式(2)——应用(匹配、切割、替换、查找)、模拟网络爬虫

2/22/2017来源:ASP.NET技巧人气:2984

一、正则表达式主要是用于操作字符串的规则,正则表达式对字符串的操作主要有一下几种应用: 1、匹配:matches(String regex); 2、切割:split(String regex); 3、替换:replaceAll(String regex, String replacement); 4、查找:

二、匹配: 需求1:编写一个正则表达式匹配手机号(要求:第一位只能是1开头,第二位3、4、5、7、8,全是数字,长度11位)

public static void matchesPhone(String phone){ String reg = "1[34578]\\d{9}"; System.out.PRintln(phone.matches(reg)?"手机号可以使用!":"手机号非法!"); }

需求2:匹配固定电话:区号-主机号(要求:区号:首位是0,长度:3~4。主机号:首位不能是0,长度:7~8)

public static void matchesTel(String tel){ String reg = "0\\d{2,3}-[1-9]\\d{6,7}"; System.out.println(tel.matches(reg)?"固话可以使用!":"固话非法!"); }

三、切割: 分组概念解析:

四、替换:

五、查找: 1、引入: 介绍查找之前我们先引入这样第一个概念——单词边界匹配器,\b,单词边界匹配器只是代表了单词开始或者结束部分,不匹配任何的字符。

2、查找: 指定为字符串的正则表达式,必须首先被编译为此类的实例。然后,可将得到的正则对象匹配任意的字符串用于创建Matcher对象,执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。 1)因此典型的调用顺序是: Pattern p = Pattern.compile(“正则”); Matcher m = p.matcher(“aaaaab”); boolean b = m.matches(); 2)查找需要使用的对象: Pattern(正则表达式)、Matcher(匹配器对象) 3)匹配器要使用到的方法: find() 通知匹配器去匹配字符串,查找符合规则的字符串。如果能查到符合规则的字符串,则返回true,否则返回false。 group() 获取符合规则的子串。 4)注意:使用group()方法的时候,一定要先调用find()方法让匹配器去查找符合规则的字符串,否则报错。

六、应用——模拟网络爬虫 1、需求:模拟网络爬虫(网络蜘蛛),获取所要格式的邮箱(邮箱后缀:.com .cn .com.cn .net)

2、代码实现:

public class Demo8 { public static void main(String[] args) { String content = "如有需求请联系[email protected]QQ.cn如有需求请联系[email protected]如有需求请联系[email protected]" +"如有需求请联系[email protected]如有需求请联系[email protected]"; String reg = "[a-zA-Z1-9]\\w{5,17}@[a-zA-Z0-9]{2,}(\\.(com|cn|net)){1,2}"; //把字符串的正则编译成正则对象 Pattern p = Pattern.compile(reg); //使用正则对象产生匹配器对象 Matcher m = p.matcher(content); while(m.find()){ System.out.println(m.group()); } } }