import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class EmailSpider {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\yongjian\\Desktop\\javase版的植物大战僵尸联机版送出源码 - Java - Java SE.htm"));
String line="" ;
try {
while((line=br.readLine())!=null){
parse(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } private static void parse(String line) {
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\yongjian\\Desktop\\抓取的Email.txt"));
Pattern p = Pattern.compile("\\w[.-]]+@[\\w[.-]+\\]+");
Matcher m = p.matcher(line);
while (m.find()){
bw.write(m.group());
bw.newLine();

}catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

}}

解决方案 »

  1.   

    ls的兄弟有代码
    http://topic.csdn.net/u/20110816/20/bc7812c1-39a6-476f-900b-888579a5a72f.html
      

  2.   

    在下新手,想用以上正则实现从已经下载的网页上抓取Email地址的功能,其实就想做个简单的匹配验证一下
      

  3.   

    已经查出正则写错了,应该是“[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+” ,但是抓取的结果还是没法写到新建的文件上
      

  4.   

    错误出现在:
    BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\yongjian\\Desktop\\抓取的Email.txt"));
    你每次都重新new,也就是每次都重新打开了这个文件,每次打开就会清空前面输入的内容,所以,只要最后一行没有匹配的,那么这个文件就没动了。
    还有,输入流和输出流要注意关闭.import java.io.BufferedWriter;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class EmailSpider {
    public static void main(String[] args) throws IOException {
    try {
    BufferedReader br = new BufferedReader(new FileReader("d:/aa.txt"));
    BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\抓取的Email.txt"));
    String line="" ;
    try {
    while((line=br.readLine())!=null){
    parse(line, bw);
    }
    br.close();
    bw.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    } private static void parse(String line, BufferedWriter bw) {
    try {
    Pattern p = Pattern.compile("\\w*+@\\w+[.]\\w+");
    Matcher m = p.matcher(line);
    while (m.find()){
    bw.write(m.group());
    bw.newLine();
    }
    }catch (IOException e1) {
    e1.printStackTrace(); 
    }  }
    }