---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
黑马程序员 正则表达式
一、作用:用于操作字符串数据,通过特定的符号来体现。
二、正则表达式对字符串的常见操作:
1、匹配:
使用String中的matches()
//手机号码匹配
public static void demo(){
String tel="13451454820";
//String regex="1[358][0-9]{9}";
String regex="1[358]\\d{9}";//也可以写成这样
boolean b=tel.matches(regex);
System.out.println(b);
}
2、切割:
使用String中的split()
//切割
public static void demo2(){
String str="zhangda wangse wuwu";
String str2="zhangdahhhhwangsemmmmmmwuwu";
//String[] name=str.split(" ");
String[] name=str2.split("(.)\\1+");
for (String names : name) {
System.out.println(names);
}
}
3、替换:
使用String中的replaceAll()
//替换
public static void demo3(){
String tel = "15300001245";//158****1245
tel = tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
System.out.println(tel);
}
4、获取
public static void demo4() {
String str = "jkj fia wen,mmgg tian kong qin";
String regex = "\\b[a-z]{3}\\b";
//1,将正则封装成对象。
Pattern p = Pattern.compile(regex);
//2, 通过正则对象获取匹配器对象。
Matcher m = p.matcher(str);
//使用Matcher对象的方法对字符串进行操作。
//查找 find();
while(m.find()){
System.out.println(m.group());//获取匹配的子序列
System.out.println(m.start()+"----"+m.end());
}
}
三、经典案例
//网页爬虫:一个程序在网络上获取指定规则的数据
//爬取邮箱地址
public static List<String> getMail() throws Exception{
//1、读取源文件
BufferedReader bufr = new BufferedReader(new FileReader("c:\\mail.html"));
/*
* 网络:
* URL url = new URL("http://192.168.1.100:8080/myweb/mail.html");
* BufferedReader bufIn = new BufferedReader(new InputStreamReader(url.openStream()));
*/
//2、对读取的数据进行规则的匹配,从中获取符合规则的数据。
String mail_regex = "\\w+@\\w+(\\.\\w+)+";
List<String> list = new ArrayList<String>();
Pattern p = Pattern.compile(mail_regex);
String line = null;
while((line=bufr.readLine())!=null){
Matcher m = p.matcher(line);
while(m.find()){
//3、将符合规则的数据存储到集合中。
list.add(m.group());
}
}
return list;
}
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------