【问题标题】:use regex for parsing mail in mbox使用正则表达式解析 mbox 中的邮件
【发布时间】:2015-03-21 23:20:33
【问题描述】:

我想基于 regex 和 java 技术获取以下信息,其中开始标记是“FROM mail@mail.com 时间”,结束标记是“FROM mail@mail.com 时间”或字符串的结尾。结果应仅包含开始标记和开始和结束标记之间的内容,但不包含结束标记。背景是我想用正则表达式获取 mbox 格式的电子邮件。开始标记为“FROM mail@mail.com 时间”,邮件的结尾是下一封邮件的开头或文件的结尾。

所以我有以下架构:

FROM mail@mail.com Time  
Text1  

FROM mail@mail.com Time  

Text2  

FROM mail@mail.com Time  
Text3

我的代码:

Pattern regex = Pattern.compile(Start_Tag+"(.*?)"+End_Tag,Pattern.DOTALL);  
Matcher matcher = regex.matcher(mbox_content);  
while (matcher.find())  
{  
System.out.println(matcher.group());  
}

我用过这个,但它不起作用。有人可以支持我吗?提前致谢。

【问题讨论】:

  • Start_Tag 和 End_Tag 本身是否代表正则表达式?

标签: java regex email mbox


【解决方案1】:
String MailAdress_complete_Tag="([a-zA-Z][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.][a-zA-Z])";
String MailAdress_without_country="([a-zA-Z][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z][\\w\\.-]*[a-zA-Z0-9])";

String MailAdress_Tag="("+MailAdress_complete_Tag+"|"+MailAdress_without_country+"|MAILER-DAEMON)";
String Time_Tag="[a-zA-Z0-9: ]{24}";
String Start_Tag="From\\s"+MailAdress_Tag+"*\\s\\s"+Time_Tag;
String End_Tag=LineSeparator+LineSeparator+"((?="+Start_Tag+")|$)"; 
Pattern regex = Pattern.compile(Start_Tag+"(.*?)"+End_Tag,Pattern.DOTALL);  

此脚本从 mbox 文件中提取邮件。它适用于我的目的。

【讨论】:

    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多