我有一个应用程序,我需要解析一个字符串来查找该字符串中的所有电子邮件地址。无论如何我不是一个常规的表达者,也不确定某些表达方式之间的区别。我找到了两个表达式,显然会匹配字符串中的所有电子邮件地址。我不能在我的C#应用程序中工作。以下是表达式:
/\b([A-Z0-9._%-]+)@([A-Z0-9.-]+\.[A-Z]{2,4})\b/i
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
以下是一个示例字符串:
Adam
<mailto:aedwards@domain.com?subject=Your%20prospect%20Search%20-%20ID:
%2011111> Edwards - Prospect ID: 11111, Ph: (555) 555-5555
Al
<mailto:Al@anotherdomain.com?subject=Your%20prospect%20Search%20-%20
ID:%20222222> Grayson - Prospect ID: 222222, Ph:
Angie
以下是c#中的代码:
var mailReg = new Regex(EmailMatch, RegexOptions.IgnoreCase | RegexOptions.Multiline);
var matches = mailReg.Matches(theString);
答案 0 :(得分:3)
第一个正则表达式是Perl对象(由斜杠分隔)。删除斜杠和模式修饰符(i),它应该起作用:
EmailMatch = @"\b([A-Z0-9._%-]+)@([A-Z0-9.-]+\.[A-Z]{2,6})\b"
此外,.museum是一个有效的域名,因此{2,6}会更好。
第二个正则表达式只匹配除了电子邮件地址之外的所有字符串。
我会保持\b
完好无损。
答案 1 :(得分:2)
如果从两端删除\ b,则两个示例中的第一个应该可以正常工作。 \ b表示它需要在电子邮件地址之前和之后的单词边界(空格,行尾和&amp; c。),并且在您的情况下不存在。
(请不要使用你新发现的邪恶力量。)
答案 2 :(得分:2)
该表达式起作用:([a-zA-Z0-9 _-。] +)@([a-zA-Z0-9 _-。] +)。([a-zA-Z] {2,5} )
感谢您的期待!