正则表达式 - 查找具有电子邮件地址的特定字符串

时间:2011-11-30 13:52:53

标签: regex

我正在尝试使用正则表达式解析一些电子邮件标题信息。我的字符串将具有如下所示的格式:

String one = "The quick brown fox jumps over the fence From: First Email <test@gmail.com>";
String two = "Some filler text From: <test2@gmail.com>";

我需要创建一个正则表达式,它将获取将从第一个字符串返回“From:First Email”的字符串,并从第二个字符串返回“From:”

到目前为止这是我的模式,但它不起作用:

 Pattern p = Pattern.compile("From: [@[\\w]+.[\\w]{2,3}]");

目前它只返回两个字符串的“From:F”和null。

3 个答案:

答案 0 :(得分:1)

尝试:

"From: [^<]*"

这匹配开头括号<

以外的所有内容

答案 1 :(得分:0)

这个怎么样:

From: [^<]*

here on Regexr

我的解决方案: 查找“From:”然后捕获所有不是“&lt;”

的内容

您发布的模式与您遇到的问题无关,是吗?

使用方括号可以创建与类中字符匹配的字符类。

[@[\\w]+.[\\w]{2,3}]
1111111  22222

1标记你的第一个字符类,包括@,[和单词字符\w,你匹配一次或多次(因为+),然后是一个字符,然后是下一个类只有\w这2或3次。最后一个无与伦比的结束方括号==&gt; 编译器应该已经落后于这个

答案 2 :(得分:0)

为什么不更具体地写一下你的正则表达式呢?

即。 "[<]{1}[a-z1-9]+@{1}[a-z1-9]+[.]{1}[a-z]{3}[>]{1}"

应找到与&lt;内的任何电子邮件地址匹配的匹配项和&gt;并且不包含任何大写字母。

在那里添加“FROM:”。如何添加“FROM:[a-z1-9A-Z] +”到开头。 I.E。:"FROM:[a-z1-9A-Z ]+[<]{1}[a-z1-9]+@{1}[a-z1-9]+[.]{1}[a-z]{3}[>]{1}"