package com.zzh.day2;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class demo4EmailSpider {
public static void main(String[] args) {
File file = new File("C:\\Users\\ihan\\Desktop\\test.html");
FileReader fr = null;
try {
fr = new FileReader(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader br = new BufferedReader(fr);
String string = "";
Pattern pattern = Pattern.compile("[a-zA-Z1-9][\\w[.-]]*@[\\w[.-]]+\\.[\\w]+");
Matcher matcher = null;
try {
while((string = br.readLine()) != null){
// System.out.println("-----"+string);
matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出结果:
971836793@qq.com
abc@foxmail.com
上面是随便在网上找的一个网页里面的邮箱。并非刻意搞的。你要是看着不舒服,你也没什么办法,反正你也干不掉我。
讲这么多,关键在这里:
Pattern pattern = Pattern.compile("[a-zA-Z1-9][\\w[.-]]*@[\\w[.-]]+\\.[\\w]+");
每次读一行,获取匹配到的邮箱。 这个表达式匹配到的邮箱格式基本上正确,但是如果用在注册邮箱时候验证方面的话,长度方面需要再加控制。比如在这个正则表达式中,类似a@b.c就会验证通过,即识别为正确的邮箱地址。