Java取邮箱名_邮件开发 中的邮箱地址提取!

注意

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

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 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的都是和";

System.out.println(getEmailList(str));

}

Output:

10000@qq.com

aaa@this.gov.cn

help@admin.sf.gg

m@levey.com.cn

sf@sf.gg

game@google.com

update 2016/01/20 15:09:41

更新已知bug

极端情况下

com 和 co 域名无法正确识别,例如 my@email.comy@email.com

这会优先提取 com域名,然后再去匹配co 域名

abc@mail....com 也能被匹配

//update 2016-1-21 10:03:45

//去除包涵连续两个点的邮箱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值