11.第十节demo4EmailSpider---获取网页中的所有的email

    xiaoxiao2025-01-19  10

    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就会验证通过,即识别为正确的邮箱地址。

    最新回复(0)