为什么这个正则表达式不会匹配到:电子邮件地址

时间:2014-11-12 02:08:48

标签: java regex email

我试图从字符串中提取电子邮件地址。

这是我的SSCCE:

class SSCCE{
    public static void main(String[] args) throws Exception{
        Pattern toEmailPattern = Pattern.compile("To: (\\S+)\\s");
            Matcher toMatcher = toEmailPattern.matcher("Date: Wed, 12 Nov 2014 01:01:44 +0000 (UTC)\n" +
                    "From: TestProjectDoNotChange Do Not Reply <Intds@blah.com>\n" +
                    "To: david1@david1.com\n" +
                    "Message-ID: <1531281253.11415754104803.JavaMail.dallend@P94461>\n" +
                    "Subject: Invitation to DataSite TestProjectDoNotChange ");
            System.out.println(toMatcher.matches()); //false
        }
}

由于某种原因,匹配器找不到电子邮件地址。我特别困惑,因为我已经测试了我的正则表达式here,该网站说它有效。

这里出了什么问题?

1 个答案:

答案 0 :(得分:3)

因为,正如javadoc所说,Matcher#matches()

  

尝试将整个区域与模式匹配。

在这种情况下,整个区域是您在创建String时提供的Matcher。正则表达式与完整字符串不匹配,但包含与正则表达式匹配的子字符串。使用Matcher#find()查找子字符串。