如何使用正则表达式解析文本文件中包含的电子邮件?

时间:2014-12-08 15:07:31

标签: java regex

enter image description here

如上所述,我的文本文件包含来自电子邮件的文本。 我需要提取E2,E1,E0以及每个来自From:,Sent:,To:,Subject的值: 我们可以使用正则表达式吗?

我们可以做" ^(从|发送|到|主题):(。*)" java中的正则表达式。 但上面的文本示例是否有任何全面的正则表达式?

2 个答案:

答案 0 :(得分:1)

查看原始消息来源。你会看到应该有一个统一的第一个标题,并且始终只有一个空白行将标题与实际消息(你想要的部分)分开。

您可以创建一个正则表达式来查找第一个标题后面的第一个空行,然后提取正文。

答案 1 :(得分:1)

不确定是否相关,但有些邮件阅读器(雷鸟等)将邮件存储在具有确定格式的文本文件中:

  • 分隔符行以From开头(即From后跟空格而不是列):此行是邮件的开头
  • 分隔符后跟标题行。每个标题行的格式为:     HEADERNAME:价值 其中HEADERNAME和值都是任意字符串。规则是HEADERNAME不能以空格开头,因为以空格开头的行是连续行
  • 标题bloc以空行终止
  • 剩下的最后一行From行是邮件正文

如果您正在阅读此类文件,我强烈建议您不要依赖已知的HEARDERNAMES,而是根据上述规则解析文件,或者更好地使用mailbox模块为您执行此操作:

  • 已经过彻底测试
  • 有许多选项可以适应邮箱格式的变化