Регулярное выражение, чтобы найти все справки Email Matches для приложения C # - PullRequest
0 голосов
/ 26 ноября 2009

У меня есть приложение, в котором мне нужно проанализировать строку, чтобы найти все адреса электронной почты в этой строке. Я ни в коем случае не обычный гуру эспрессии и не уверен, в чем разница между некоторыми выражениями. Я нашел 2 выражения, которые, соответственно, будут соответствовать всем адресам электронной почты в строке. Я не могу заставить ни работать в моем приложении 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);

Ответы [ 3 ]

3 голосов
/ 26 ноября 2009

Первое регулярное выражение - это объект Perl (ограниченный косой чертой). Удалите косую черту и модификатор режима (i), и он должен работать:

EmailMatch = @"\b([A-Z0-9._%-]+)@([A-Z0-9.-]+\.[A-Z]{2,6})\b"

Кроме того, .museum является допустимым доменом, поэтому {2,6} немного лучше.

Второе регулярное выражение соответствует только целым строкам, которые состоят только из адреса электронной почты.

Я бы оставил \b нетронутым.

2 голосов
/ 26 ноября 2009

Это выражение сработало: ([a-zA-Z0-9 _-.] +) @ ([A-zA-Z0-9 _-.] +). ([A-zA-Z] {2,5} )

Спасибо за внимание!

2 голосов
/ 26 ноября 2009

Первый из ваших двух примеров должен работать, если вы удалите \ b с обоих концов. \ B означает, что он ожидает границу слова (пробел, конец строки и т. Д.) До и после адреса электронной почты, а в вашем случае этого нет.

(Пожалуйста, не используйте свои новые найденные силы для зла.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...