我一直在努力在這一段時間,你可以請給一些提示...正則表達式/正則表達式「或」
在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:[email protected]]\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:[email protected]]\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>
我正則表達式只能匹配一個狀態(到列表或抄送清單),但不是兩個,你可以請幫忙,謝謝!
不要使用RegEx解析HTML/XML。改爲使用XML/HTML解析器。如[LINQ to XML](http://msdn.microsoft.com/en-us/library/bb387098.aspx)或[HTML Agility Pack](http://htmlagilitypack.codeplex.com/)。 – abatishchev 2013-04-10 00:55:49
一般而言,您正在尋找管道字符http://jsfiddle.net/b9chris/8xMAm/ - 因爲您可能知道JS和C#都使用相同的正則表達式標準,所以正則表達式字符串在兩者之間是兼容的。但以這種方式使用單個正則表達式似乎太複雜了 - 將其分解成幾個更簡單的部分,您可能得到的幾個額外的性能不值得這個代碼對於下一個編碼器來說是多麼的不可能修改。 – 2013-04-10 01:03:37
嗨,謝謝你的回覆。由於這是現有工作的一項新功能,不幸的是我必須堅持使用C#中的Regex.Matches,對我而言,唯一的選擇可能就是正則表達式。 – Xin 2013-04-10 01:05:50