代码之家  ›  专栏  ›  技术社区  ›  Jeff LaFay

正则表达式模式提取电子邮件数据

  •  1
  • Jeff LaFay  · 技术社区  · 14 年前

    我正在从POP服务器检索原始文本(包括标题和消息)。我需要捕获头之后的所有内容,头与用户消息之间以一个空行终止。

    ------Original Message------
    

    示例电子邮件可能如下所示

    返回路径:。。。
    ...
    其他电子邮件元数据:。。。

    你好,来自雷格斯兰德,很高兴收到你的来信。
    ------原始消息------
    元数据:。。。

    嘿,老兄,你能帮我吗?谢谢!

    真的,我。

    我需要提取“你好,从regex土地,我很高兴听到你。”和任何其他文字/行之前,原来的消息。

    我现在正在使用这个正则表达式(C#在多行模式下),它似乎可以工作,只是如果正文为空,它会捕获原始消息。我宁愿用一个空字符串来代替。

    ^\s*$\n(.*)(\n------Original Message------)?
    

    编辑
    我没有投过反对票,如果你碰巧投了反对票,加入评论通常是有帮助的。

    3 回复  |  直到 14 年前
        1
  •  -1
  •   t0mm13b    14 年前

    你为什么不用 DotnetOpenMail ? 使用正则表达式来实现这一点是错误的,最好使用一个专用的电子邮件处理程序。。。。

        2
  •  0
  •   Timwi    14 年前

    \n

    ^\s*$\r\n(.*)(^------Original Message------$)?
    

    如果你不想在身体的最后换行,你仍然可以使用 string.Trim()

    这假设输入使用 \r\n

        3
  •  -1
  •   El Ronnoco    14 年前

    你需要替换 (\n------Original Message------) 具有 (?=(\n------Original Message------))