利用正则表达式抓取Email地址

这是一个利用正则表达式获取本地储存的文件(txt doc html)或网页中得Email地址。在原理上接近网络爬虫。

但是我在做测试得时候,不能获取openOffice的文件中的地址。应该是编码问题。可是openOffice号称自己

完全支持MS Office 得文件,那编码应该式兼容的啊。而MS的doc文件在试验中式成功的。这个我问题我以后再看看吧。

其中的英语是在太面,但是我得坚持用英语写。

  1. /*
  2.  * This program was write for catching  email addresses
  3.  * from a document that contains lots of them.
  4.  */
  5. import java.io.BufferedReader;
  6. import java.io.FileNotFoundException;
  7. import java.io.FileReader;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.io.InputStreamReader;
  11. import java.net.HttpURLConnection;
  12. import java.net.MalformedURLException;
  13. import java.net.URL;
  14. import java.util.regex.Matcher;
  15. import java.util.regex.Pattern;
  16. /**
  17.  * @author Sancho_lai
  18.  * 
  19.  */
  20. public class ReadFileFromLocalAndWeb {
  21.     public void test() {
  22.         /**
  23.          * this part get email address from local doc
  24.          */
  25.         System.out.println("********************Get Email Address From Local doc********************");
  26.         try {
  27.             /*
  28.              * here you can input whatever address of doc that contains the email addresses you want,
  29.              */
  30.             BufferedReader br = new BufferedReader(new FileReader("E://workspace//Project_For_ToyTest//doc//EmailAddress.txt"));
  31. //          BufferedReader br = new BufferedReader(new FileReader("E://workspace//Project_For_ToyTest//doc//New OpenDocument Text.odt"));
  32.             String line = "";
  33.             
  34.             while( (line = br.readLine()) != null) {
  35.                 parser(line);
  36.             }
  37.         } catch (FileNotFoundException e) {
  38.             e.printStackTrace();
  39.         } catch (IOException e) {
  40.             e.printStackTrace();
  41.         }
  42.         /**
  43.          * this part get email address from web
  44.          */
  45.         System.out.println("********************Get Email Address From the Web********************");
  46.         String line = "";
  47.         InputStream urlStream;
  48.         try {
  49.             URL url = new URL("http://www.8885.net/bbs/thread-189746-1-3.html");
  50.             HttpURLConnection connection = (HttpURLConnection)url.openConnection();
  51.             urlStream = connection.getInputStream();
  52.             BufferedReader br = new BufferedReader(new InputStreamReader(urlStream,"gbk"));
  53.             while( (line = br.readLine()) != null) {
  54.                 parser(line);
  55.             }
  56.         } catch (MalformedURLException e) {
  57.             e.printStackTrace();
  58.         } catch (IOException e) {
  59.             e.printStackTrace();
  60.         } finally {
  61.         }
  62.     }
  63.     private void parser(String line) {
  64.         //this is the email address pattern.
  65.         Pattern p = Pattern.compile("[//w[.-]]+@[//w[.-]]+//.[//w]+");
  66.         Matcher m = p.matcher(line);
  67.         while(m.find()) {
  68.             System.out.println(m.group());
  69.         }
  70.     }
  71.        public static vide main(String[] args) {
  72.            ReadFileFromLocalAndWeb t = new ReadFileFromLocalAndWeb();
  73.            t.test();
  74.        }
  75. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值