在文本中查找电子邮件地址

时间:2015-02-07 19:27:24

标签: java regex

有人可以告诉我如何在文本中找到电子邮件地址吗?

示例文字:

  

“嗨,

     

我只是blahblah

     

电子邮件:lolcat@catinator.com

     

另一个是lolcat2@catinator.com“

所以输出是:

lolcat@catinator.com
lolcat2@catinator.com

我试过Regex,但我不知道如何在整篇文章中做到这一点......

Pattern pattern = Pattern.compile("[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}");
Matcher matcher = pattern.matcher("asd@asdasd.de".toUpperCase());

if(matcher.matches()){
    System.out.println("Mail found!");
}else{
    System.out.println("No Mail...");
}

有人能帮助我吗? :(

问候!

2 个答案:

答案 0 :(得分:3)

他们有很多不同类型的电子邮件地址格式,很难与所有这些格式相匹配。一个简单的(用于结构化数据)但没有如此有效的方法如下:

String s  = "Hey,\n" +
            "I just blahblah\n" +
            "E-Mail: lolcat@catinator.com\n" +
            "Another would be lolcat2@catinator.com";

Pattern p = Pattern.compile("\\S+@\\S+");
Matcher m = p.matcher(s);

while (m.find()) {
  System.out.println(m.group());
}

输出

lolcat@catinator.com
lolcat2@catinator.com

答案 1 :(得分:0)

我不确定您提供的正则表达式。但如果它很好并且符合您的目的,那么您可以使用以下来提取字符串,

Matcher matcher = pattern.matcher("asd@asdasd.de".toUpperCase());
String result;
while (matcher.find()) { 
    // result now will contain  the email address
    result = matcher .group();
    System.out.println(result);
}