2012-01-31 25 views
-2

我试图创建一个正则表达式,它将在电子邮件标题中的Cc字段之后查找电子邮件地址。我没有对字符串进行编程控制,所以它不是特定于任何特定的编程语言。这只是一些软件的集成的一部分,其希望在搜索条件在字符串中查找电子邮件地址的正则表达式

电子邮件标题看起来像这样一些正则表达式:

Received: by hermit.cdu-staff.local 
    id <[email protected]>; 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: <[email protected]> 
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: Email header example 
Thread-Index: Aczm4xa7dGVpHUWERSSOuR8HCNmrAw== 
From: "Bishnu Paudel" <[email protected]> 
To: "Study" <[email protected]> 
Cc: "Cameron Loudon" <[email protected]> 

我创建了一个正则表达式伟大的工程,如果字符串是一行字符串(标题中的最后一行)。这里是表达式

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

任何帮助将不胜感激。

回答

1

以下正则表达式应该解决的问题

\b[A-Z0-9._%+-][email protected]\b 

作为regex的适配呈现here。请注意原始网站上关于“有效”电子邮件地址的定义的评论。

+0

HI为止,我终于通过构建这个正则表达式的工作。 **抄送:。* <(student.admin | study | summer | midyear | changeyourworld)@ourcompany [。] com> **匹配头部例如_To:<[email protected]> 抄送:“studentadmin”< [email protected]>, \t“Bishnu Paudel”<[email protected]> _ 但它不会匹配目标电子邮件(student.admin)不在其首位的标头Cc字段。例如:_To:<[email protected]> 抄送:“Bishnu Paudel”<[email protected]>, \t“studentadmin”<[email protected]> _ – 2012-02-29 00:59:30

0

您还没有指定您所使用的编程语言,但在一般情况下,你可以写这样的事情:

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

,将匹配[email protected][email protected],只要它是由启动前的字符串或逗号(带有可选空白),后跟逗号或字符串结尾(带有可选空白)。

注意,电子邮件地址实际上是例如相当复杂—,如果我没有记错,[email protected]"admin"@ourcompany.com在技术上是等效—所以我会谨慎:这种点对点解析方式可能是不可取的。 (基本上,我会问:如果你的正则表达式返回一个假阳性或假阴性,那么这个问题有多大?如果你需要对结果非常有信心,那么这种方法可能不是这样。)

+0

谢谢Ruakh,是您的正则表达式与电子邮件地址匹配。但我需要一个正则表达式来在电子邮件头中搜索我们的电子邮件地址,其中包含CC:,TO:和一堆东西。我只需要查看我们的电子邮件地址是否存在于电子邮件字符串中,然后是“CC:”。电子邮件标题以字符串形式出现。我没有编程控制来做到这一点,所以它不涉及任何编程语言。 – 2012-02-01 00:47:40

+0

您好,我最终创建了一个正则表达式,它可以匹配邮件之前/之后或邮件之间的任意数量的字符,并会查找我们的电子邮件地址。(^ |,)\ s *。*抄送:。*( bishnu.paudel | cameron.loudon)@ourcompany [。] com \ s *($ |,)但是,这与包含新行字符的字符串不匹配。请任何想法吗? – 2012-02-09 03:58:19

+0

@BishnuPaudel:默认情况下,'.'表示“任何非换行符”,但您可以指定它也应该匹配换行符。不幸的是,你仍然*没有指定这是什么编程语言,所以很难给出适当的建议。你可以尝试在'(?s:...)'中包装整个正则表达式 - 例如'(?s:(^ |,)\ s *。* Cc:。*(bishnu.paudel | cameron.loudon )@ourcompany [。] com \ s *($ |,))' - 可以使用多种语言。 – ruakh 2012-02-09 13:05:26

0

我通过构建这个正则表达式来得到它。 Cc:.*<(student.admin|study|summer|midyear|changeyourworld)@ourcompany[.]com>其中例如火柴标题:

To: <[email protected]> 
Cc: "studentadmin" <[email protected]>, "Bishnu Paudel" <[email protected]> 

,但其中有针对性的电子邮件(student.admin)是不是在他抄送领域的首位,这将不匹配的标题。例如:

To: <[email protected]> 
Cc: "Bishnu Paudel" <[email protected]>, "studentadmin" <[email protected]> 

干杯,

相关问题