开发者社区> 问答> 正文

邮件开发 中的邮箱地址提取

如何在 几万行或者 几十万行的的 文件中 准确的获取到 邮箱地址 并把这些地址 输出!

展开
收起
蛮大人123 2016-03-10 15:48:43 2585 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    读取几十万行记得逐行读取,然后将返回的emailList拼接起来,不然一次性全部读取几十万行会出问题
    Code :

     /**
         * 域名后缀维护列表,为保证匹配准确度,仅匹配域名列表里有的邮箱
         * 例如  sf@sf.ggadmin@,help@admin.sf.gg 都可以被正确匹配
         * sf@sf.gggame@google.com 也可以正确拆分为 sf@sf.gg 和 game@google.com
         * 以下域名列表请自行按需添加, | 是间隔符
         *
         * @param str 传入的含有邮箱的字符串
         * @return emailList 已提取的邮箱列表
         * @author Levey
         * @time 16/1/20 14:35
         */
    
        private static List getEmailList(String str) {
            //在此维护域名后缀表
            String dn = "com|cn|org|com.cn|xyz|net|gg|gov.cn|love";
            Pattern p = Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.(" + dn + ")"); //邮箱验证
            Matcher m = p.matcher(str);
            List<String> emailList = new ArrayList<>();
            while (m.find()) {
                //update  2016-1-21 10:03:45
                //去除包涵连续两个点的邮箱
                if(!m.group().contains("..")) {
                    emailList.add(m.group());
                }
            }
            return emailList;
        }

    Test:

    public static void main(String args[]) {
            String str = "tencent.sf.gg@10000@qq.comghghghghg\n" +
                    "你好leveychen,lev;levey-chen@myema你aaa@this.gov.cn好il.gmail.com悲" +
                    "剧help@admin.sf.gg了" +
                    "啊m@levey.com.cnmnihao的都是</br>和<sf@sf.gggame@google.com>";
            System.out.println(getEmailList(str));
        }

    Output:
    screenshot

    2019-07-17 18:57:48
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载