解析带有奇怪格式条目的 SQL 查询报告

Parsing a SQL Query Report with Bizarrely Formatted Entries

我目前正在编写一个 C# 程序,该程序解析 SQL 服务器查询报告以获取数据,然后将其保存以备后用。到目前为止,我一直在解析的查询非常简单,但我刚刚收到一个包含此条目的测试文件:

Client Contact                                                                                                                                                                                                                                                   Client Email
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Primary: Nelli Quiroga

, nelli.quiroga@parservicios.com 
Secondary: Zully Aranda, zully.aranda@parservicios.com
                                                                                                                                                nelli.quiroga@parservicios.com|zully.aranda@parservicios.com

(请原谅格式 - 这正是查询输出的方式。)

我需要能够提取主要和次要客户端的名称和电子邮件地址,然后将其存储在 List<Tuple<string, string>> 中。到目前为止,我还没有能够设计出一种解决方案来有效地完成它,如果有的话。我最好的猜测是我必须以某种方式使用 Regex,但我不熟悉 Regex 在 C# 中的工作方式,而且我的 regex 技能很生疏。

一些附加信息:

我们将不胜感激。

好吧,经过反复试验,我能够编写一个正则表达式,它可以很好地处理给我提供的联系人输出。我不能保证它能很好地与 任何 输出文件一起工作 can/will,但现在它做了我需要它做的事情。

这是有问题的正则表达式:

(?:Primary|Secondary):[ ]*[\r\n]*[a-zA-Z ]+[\r\n]*[ ]*,[ ]*[\r\n]*[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-z]+[ ]*[\r\n]*

它能够将条目分成两部分,主要联系人和次要联系人,这样我就可以 trim 并根据需要拆分每个联系人。

同样,我不能肯定地说这适用于任何给定的输入,但我也认为我已经设法使其相当安全,因此 [ ]* 和 [=12= 的所有实例].