2017-05-07 69 views
0

我的目標是收集來自電子郵件的信息併除去一些關鍵信息(本例中爲名稱)以外的所有信息。解析來自電子郵件的信息

以下是收到的示例電子郵件。我已經能夠從Outlook中取出電子郵件,並將所有正文文本加載到數據網格中,但我不知道如何解析信息並檢索名字和姓氏信息。

文字版

From: Company 
Sent: Sunday, May 7, 2017 Eastern Time (US & Canada) 
To: LastName, FirstName (CompanyName) 
Subject: Thank you for your recent purchase. 

Dear FirstName LastName, 
Thank you for 

HTML版本

<font face="Tahoma" size="2"><b>From:</b> Company<br> 
<b>Sent:</b> Sunday, May 7, 2017(UTC-05:00) Eastern Time (US &amp; Canada)<br> 
<b>To:</b> LastName, FirstName (CompanyName)<br> 
<b>Subject:</b> Thank you for your recent purchase<br> 
<font face="Tahoma" size="2"><b>From:</b> Company<br> 
<b>Sent:</b> Sunday, May 7, 2017(UTC-05:00) Eastern Time (US &amp; Canada)<br> 
<b>To:</b> LastName, FirstName (CompanyName)<br> 
<b>Subject:</b> Thank you for your recent purchase<br> 
</font><br> 
<div></div> 
<div> 
<div id="left-align-on-reply" dir="ltr"> 
<div id="main"> 
<div id="logo-row-box" style="width:95%; text-align:right; padding-top:6%; padding-bottom:6%"> 
<img id="imagesent" src="image.png" style="display:inline-block; height:28px; width:24px; right:0px"> 
</div> 
<table id="message-body-wrapper" border="0" cellpadding="0" cellspacing="0"> 
<tbody> 
<tr> 
<td id="message-body-left-margin" width="0"></td> 
<td id="message-body"> 
<table id="paragraphs" border="0" cellpadding="0" cellspacing="0"> 
<tbody> 
<tr> 
<td class="paragraph" style="padding:0 5% 18px; font:300 14px/18px 'Lucida Grande',Lucida Sans,Lucida Sans Unicode,sans-serif,Arial,Helvetica,Verdana,sans-serif; color:#333"> 
Dear FirstName LastName,</td> 
</tr> 

回答

0

一些醜陋的正則表達式來救援

var regex = new Regex("To:</b> ([A-z]+), ([A-z]+)"); 
var m = regex.Match(GetHtml()); 
var firstName = m.Groups[2].Value; 
var secondName = m.Groups[1].Value; 

請注意,這是很脆,僅適用於英語按照其定義的方式來標註。

編輯:正則表達式的細分的要求

  • "To:</b> "是模式字符的,我們正在尋找的字符串有下手。

  • "([A-z]+),"然後在逗號前查找A和z之間的一個或多個字符(包括大寫和小寫)。請注意,這不會處理雙重名稱,帶連字符的名稱或超出此範圍的任何字符。 ()圍繞它捕獲結果在一個組中。

  • " ([A-z]+)"以同樣的方式爲逗號

+0

這個答案的伎倆來後的第一個名字。我試圖學習一些正則表達式,因爲它似乎很容易處理我遇到的很多情況。你能分解第一行發生的事情嗎? – SomethingStrange

+0

更新了一些細節的答案 – Vidar