读取几十万行记得逐行读取,然后将返回的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:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。