我试图从字符串中提取电子邮件地址。
这是我的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,该网站说它有效。
这里出了什么问题?
答案 0 :(得分:3)
因为,正如javadoc所说,Matcher#matches()
尝试将整个区域与模式匹配。
在这种情况下,整个区域是您在创建String
时提供的Matcher
。正则表达式与完整字符串不匹配,但包含与正则表达式匹配的子字符串。使用Matcher#find()
查找子字符串。