2

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

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

以下是电子邮件的正文:


Gentilissima Agenzia Nexity Residenziale

前言:

Sig./Sig.ra:巴勃罗·阿佐林

电子邮件:pabloazorin@gmail.com

电话:02322-498900

sta cercando un immobile con le seguenti caratteristiche:

类别:住宅

Tipologia:别墅

Tipo di contratto: Vendita

公社:阿萨戈省 米兰

Zona:不详

Fascia di Prezzo:非特定


我需要以粗体提取文本,我认为 RegEx 是我需要的...

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

谢谢!

——巴勃罗

4

7 回答 7

3

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

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

Email: (.*)

Tel\.: (.*)

sta cercando un immobile con le seguenti caratteristiche:

Categoria: (.*)

Tipologia: (.*)

Tipo di contratto: (.*)

Comune: (.*)

Zona: (.*)

Fascia di prezzo: (.*)

在 C# 中

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
于 2008-12-14T13:26:08.767 回答
2

阅读掌握正则表达式。它将教你完成这个和其他类似的正则表达式问题所需知道的一切,并且会给你足够的理解和洞察力,让你开始编写更复杂的正则表达式。

于 2008-12-13T17:52:52.440 回答
2

对于电子邮件下载,我使用了 Mailbee .Net 对象。这个库很容易使用并且有据可查。但是如果你想避免编程,你也可以使用像EmailParser2Database这样的电子邮件解析器。

于 2011-01-25T13:31:05.727 回答
1

我认为将此字符串拆分为行数组会更好,您可以使用所有标题作为键来初始化字典,然后您将从字典中搜索每一行的标题(例如“电子邮件:”)然后你将结果作为值放回字典中,最后你将拥有一个包含所有标题和值的字典。我认为您不需要正则表达式。实际上这样标题的顺序就无关紧要了。

于 2009-11-01T19:10:50.077 回答
1

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

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

于 2008-12-13T19:40:38.340 回答
0

您真的不想手动或使用正则表达式来执行此操作。有许多不同的方法可以对电子邮件中的数据进行编码,并且许多不严格符合规范的电子邮件仍然可以被解析。我在 .NET 环境中使用AnPOP取得了成功。

于 2008-12-15T02:22:45.000 回答
0

我们发现,对于垃圾邮件过滤和其他大容量应用程序,正则表达式在解析 MIME 标头时有点慢,这正是您想要做的。代码有些特殊,但我编写了一个C 状态机来进行解析,它的速度与你得到的一样快,而无需使用 re2c 之类的东西。该代码不适合胆小的人,但速度非常快。

对于电子邮件,我认为您会发现显式状态机比正则表达式更容易使用。这也是 goto 语句的最后避难所!

于 2008-12-13T20:06:04.590 回答