我想根据正则表达式和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());
}
我用过这个,但它不起作用。有人可以支持我吗?提前谢谢。
答案 0 :(得分:0)
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文件中提取邮件。它适用于我的目的。