2015-01-23 3 views
0

Я хочу получить следующую информацию на основе технологий regex и java, где начальный тег «FROM [email protected] Time», а конечный тег «FROM [email protected] Время "или конец строки. Результат должен содержать только начальный тег и содержимое между начальным и конечным тегами, но не тегом конца. Предпосылки: я хочу получить электронные письма в формате mbox с регулярными выражениями. Начать помечается «FROM [email protected] Time», а конец почты - либо начало следующей почты, либо конец файла.использовать регулярное выражение для разбора почты в mbox

Так у меня есть следующая схема:

FROM [email protected] Time 
Text1 

FROM [email protected] Time 

Text2 

FROM [email protected] 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()); 
} 

Я использовал это, но он не работает. Может ли кто-нибудь поддержать меня? Заранее спасибо.

+1

Значения Start_Tag и End_Tag представляют собой регулярное выражение? – Totem

ответ

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. Это работает для моей цели.

 Смежные вопросы

  • Нет связанных вопросов^_^