我的目标是从电子邮件中收集信息并删除除一些关键信息(在本例中为姓名)之外的所有内容。
以下是收到的示例电子邮件。我已经能够从 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 & 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 & 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>
一些丑陋的正则表达式来拯救
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]+)"
逗号后的名字的工作方式相同
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句