Регулярное выражение для поиска адреса электронной почты в строке - PullRequest
0 голосов
/ 01 февраля 2012

Я пытаюсь создать регулярное выражение, которое будет искать адрес электронной почты после поля Cc в заголовке письма.У меня нет управления программированием строки, поэтому оно не относится к какому-либо конкретному языку программирования.Это всего лишь часть интеграции некоторого программного обеспечения, которое ожидает некоторого регулярного выражения в критериях поиска

Заголовок электронного письма выглядит следующим образом:

Received: by hermit.cdu-staff.local 
    id <01CCE6E3.19910AB8@hetmit.ere-tyumm.local>; Thu, 9 Feb 2012 13:57:14 +0930
MIME-Version: 1.0
Content-Type: multipart/alternative;
    boundary="----_=_NextPart_001_01CCE6E3.19910AB8"
Content-class: urn:content-classes:message
X-MimeOLE: Produced By Microsoft Exchange V6.5
Subject: Email header example
Date: Thu, 9 Feb 2012 13:57:10 +0930
Message-ID: <6434D994F5A495428AB3B69877565EF97040C469A@hermit.cdi-stann.local>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: Email header example
Thread-Index: Aczm4xa7dGVpHUWERSSOuR8HCNmrAw==
From: "Bishnu Paudel" <Bishnu.Paudel@company.com>
To: "Study" <study@company.com>
Cc: "Cameron Loudon" <Cameron.Loudon@company.com>

Я создал регулярное выражение, которое прекрасно работает, еслистрока является строкой в ​​одну строку (последняя строка в заголовке).Вот выражение

(^|,)\s*.*Cc:.*(bishnu.paudel|cameron.loudon)@company[.]com\s*($|,).

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

Следующее регулярное выражение должно решить проблему

\b[A-Z0-9._%+-]+@yourcompany.com\b

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

0 голосов
/ 27 апреля 2012

Я наконец заработал, создав это регулярное выражение.Cc:.*<(student.admin|study|summer|midyear|changeyourworld)@ourcompany[.]com>, который соответствует заголовку, например:

To: <paudel_bishnu@hotmail.com> 
Cc: "studentadmin" <student.admin@ourcompany.com>, "Bishnu Paudel" <Bishnu.Paudel@ourcompany.com> 

, но он не будет совпадать с заголовком, в котором адрес электронной почты (student.admin) находится не на первом месте поля Cc.например:

To: <paudel_bishnu@hotmail.com> 
Cc: "Bishnu Paudel" <Bishnu.Paudel@ourcompany.com>, "studentadmin" <student.admin@ourcompany.com> 

Приветствия,

0 голосов
/ 01 февраля 2012

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

(^|,)\s*(admin|clients)@ourcompany[.]com\s*($|,)

Это будет соответствовать admin@ourcompany.com или clients@ourcompany.com, при условии, что ему предшествует начало строки или запятая (с необязательным пробелом), а затем запятая или конец строки (с необязательным пробелом).

Обратите внимание, что адреса электронной почты на самом деле довольно сложные & mdash; например, если я правильно помню, admin@ourcompany.com и "admin"@ourcompany.com технически эквивалентны & mdash; поэтому я был бы осторожен: подобный подход к разбору может не подходить. (По сути, я бы спросил: насколько велика проблема, если ваше регулярное выражение возвращает ложный положительный результат или ложный отрицательный результат? Если вам нужно быть очень уверенным в результатах, то этот подход, вероятно, не является подходящим способом.)

...