2015-01-23 5 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 파일에서 메일을 추출합니다. 그것은 내 목적을 위해 작동합니다.

관련 문제