Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用正则表达式解析电子邮件内容_C#_Email Parsing - Fatal编程技术网

C# 用正则表达式解析电子邮件内容

C# 用正则表达式解析电子邮件内容,c#,email-parsing,C#,Email Parsing,每天我都会收到数千封电子邮件,我想解析这些电子邮件的内容/正文,将它们加载到数据库中 我的问题是,现在我正在手动解析电子邮件正文,我想将逻辑更改为C#中的正则表达式。 以下是电子邮件的正文: Gentilisima Agenzia Nexity公寓 诺斯特罗·尤内特: Sig./Sig.ra:Pablo Azorin 电子邮件:pabloazorin@gmail.com 电话:02322-498900 卡塔特里西古蒂镇不动车站: 分类:居住区 蒂波罗吉亚:别墅 蒂波·迪康塔托:Vendita

每天我都会收到数千封电子邮件,我想解析这些电子邮件的内容/正文,将它们加载到数据库中

我的问题是,现在我正在手动解析电子邮件正文,我想将逻辑更改为C#中的正则表达式。

以下是电子邮件的正文:


Gentilisima Agenzia Nexity公寓

诺斯特罗·尤内特:

Sig./Sig.ra:Pablo Azorin

电子邮件:pabloazorin@gmail.com

电话:02322-498900

卡塔特里西古蒂镇不动车站:

分类:居住区

蒂波罗吉亚:别墅

蒂波·迪康塔托:Vendita

科穆尼:阿萨戈省米兰

地带:非特定数据

prezzo筋膜:非特定数据


我需要用粗体提取文本,我认为正则表达式是我需要的

期待收到您关于如何使其工作的建议

谢谢


——巴勃罗阅读。它将教会您完成此问题和其他类似正则表达式问题所需的一切知识,并将为您提供足够的理解和洞察力,使您能够开始编写更复杂的正则表达式。

如果电子邮件的格式始终相同,您可以通过多种不同的方式来完成此操作。一个简单的方法是在换行符上拆分,并在每行上取一个子字符串,从标签后面开始


使用正则表达式,您可能会创建一个正则表达式来创建许多命名捕获。然后,您可以索引到每个命名组的名称上匹配的Groups属性,以便从中获取值。当然,这有点复杂。

我们发现,对于垃圾邮件过滤和其他高容量应用程序,正则表达式解析MIME头有点慢,这正是您想要做的。代码有点专业化,但我编写了一个程序,它的速度与不使用re2c之类的程序的速度一样快。这个密码不适合心脏虚弱的人,但它的速度快得令人眼花缭乱


对于电子邮件,我想你会发现显式状态机比正则表达式更容易使用。这也是goto声明的最后避难所

假设您的电子邮件中不加粗的部分总是出现在所有电子邮件中,您可以使用正则表达式轻松地从电子邮件中获取所有部分:

Sig\./Sig\.ra :(.*)

Email: (.*)

Tel\.: (.*)

sta cercando un immobile con le seguenti caratteristiche:

Categoria: (.*)

Tipologia: (.*)

Tipo di contratto: (.*)

Comune: (.*)

Zona: (.*)

Fascia di prezzo: (.*)
在C中#


您确实不想手动或使用正则表达式执行此操作。在电子邮件中有许多不同的编码方式,许多电子邮件并不严格符合规范,仍然可以解析。我在.NET环境中成功地使用了

我认为最好将这个字符串拆分成一个行数组 可以使用所有标题作为键初始化字典 您将从字典中搜索每一行的标题(“例如Email:”),然后将结果作为值返回到字典中 最后,您将拥有一本包含所有标题和值的词典。 我想你不需要正则表达式。
实际上,这样一来,标题的顺序就不重要了。

对于电子邮件下载,我使用了Mailbee.Net对象。这个库很容易使用,并且有很好的文档记录。但如果您不想编程,也可以使用电子邮件解析器,如。

谢谢您的快速评论!我很快就会看这本书,但在此期间,我需要尽快完成它。你能给我一个如何实施的建议吗?干杯,-pablot子字符串/IndexOf()方法也比构建复杂的正则表达式要快。
Regex regexObj = new Regex(@"Sig\./Sig\.ra :(.*)

Email: (.*)

Tel\.: (.*)

sta cercando un immobile con le seguenti caratteristiche:

Categoria: (.*)

Tipologia: (.*)

Tipo di contratto: (.*)

Comune: (.*)

Zona: (.*)

Fascia di prezzo: (.*)");
Match matchObj = regexObj.Match(subjectString);
string Sig = matchObj.Groups[1].Value;
string Email = matchObj.Groups[2].Value;
// and so on to get all the other parts