正则表达式/正则表达式'OR'

时间:2013-04-10 00:50:30

标签: html .net regex email

我已经在这方面挣扎了一段时间,你能不能给出一些提示......

在Outlook电子邮件中,我们可以将电子邮件的信息转发到电子邮件正文中:

From: Jackson, Peter
Sent: Tuesday, 26 March 2013 08:25 PM
To: **Match, Me**; GGG
Cc: AAA, BBB; CCC, DDD; EEE, FFF
Subject: FW: Good Morning

From: Jackson, Peter
Sent: Tuesday, 26 March 2013 08:25 PM
To: AAA; GGG
Cc: BBB; **Match, Me**; DDD; EEE, FFF
Subject: FW: Good Morning

现在,如果“收件人”或“抄送”列表中有“匹配,我”,我希望将“日期时间”设置为“已发送”。

现在的正则表达式是:

(<b>)?Sent:(</b>)?\s(?<MatchDateTime>[A-Z][a-z]{5,8},\s[0-9]{1,2}\s[A-Z][a-z]{2,9}\s[0-9]{4}\s[0-9{1,2}:[0-9][0-9]\s[A-Z]{2})(<br\s?/?>)?(\\r\\n)*?(<b>)?To:(</b>)?\s.[^<]*?(Match, Me).*?(<br\s?/?>)?(\\r\\n)*?(<b>)?Cc:(</b>)?\s.[^<]*?(Match, Me).*?(<br\s?/?>)(\\r\\n)*

以下是一些示例文字:

<span lang=\"EN-US\" style=\"font-size:10.0pt;font-family:"Tahoma","sans-serif"\"> BBB, AAA [mailto:AAA.BBB@ccc.com.au]\r\n<br>\r\n<b>Sent:</b> Tuesday, 26 March 2013 5:23 PM<br>\r\n<b>To:</b> **Match, Me**; DDD; EEE<br>\r\n<b>Cc:</b> EEE, ZZZ; GGG, FFF<br>\r\n<b>Subject:</b> RE: Good Morning<o:p></o:p></span>

<span lang=\"EN-US\" style=\"font-size:10.0pt;font-family:"Tahoma","sans-serif"\"> BBB, AAA [mailto:AAA.BBB@ccc.com.au]\r\n<br>\r\n<b>Sent:</b> Tuesday, 26 March 2013 5:23 PM<br>\r\n<b>To:</b> UUU, AAA, DDD; EEE<br>\r\n<b>Cc:</b> Match, Me; ZZZ; GGG, FFF<br>\r\n<b>Subject:</b> RE: Good Morning<o:p></o:p></span>

我的正则表达式只能匹配一个条件(在“列表”或“抄送”列表中)但不能同时匹配两者,请你帮忙,谢谢!

1 个答案:

答案 0 :(得分:0)

这就是我提出的:

(\<b\>)?Sent:(\</b\>)?\s(?<MatchDateTime>[A-Z][a-z]{5,8},\s[0-9]{1,2}\s[A-Z][a-z]{2,9}\s[0-9]{4}\s[0-9]{1,2}:[0-9][0-9]\s[A-Z]{2}).*?(To|Cc):(\</b\>)?\s[^<]*?(Match, Me)

首先,我认为最好逃避所有<>字符,因为它们在regex语法中经常使用。在日期匹配组之后,我添加了一个非贪婪的.*?来阅读输入,直到满足第一个ToCc。然后它会读取,直到匹配Match, Me