2012-05-10 4 views
2
나는 둘 사이의 문자열

정규 표현식

에서 문자열을 찾는 정규 표현식을 사용하고

를 사용하여 둘 사이의 문자열에서 문자열 찾기

코드 :

 Pattern pattern = Pattern.compile("EMAIL_BODY_XML_START_NODE"+"(.*)(\\n+)(.*)"+"EMAIL_BODY_XML_END_NODE"); 
     Matcher matcher = pattern.matcher(part); 
     if (matcher.find()) { 
         .......... 

그것은 텍스트에 대한 잘 작동하지만, 텍스트와 같은 특수 문자가 포함 된 경우 줄 바꾸기가 있습니다.

답변

3

.이 줄 끝 문자와 일치하도록 패턴을 컴파일해야합니다. 이렇게하려면 DOTALL 플래그를 사용해야합니다.

Pattern pattern = Pattern.compile(regex, Pattern.DOTALL); 

편집 : 죄송합니다.이 문제가 있었으므로 오래되었습니다. 중간 정규식을 (.*)(\\n+)(.*)에서 (.*?)으로 변경해야합니다. EMAIL_BODY_XML_START_NODE 요소가 여러 개있는 경우 수량 한정 기호 (*?)가 필요합니다. 그렇지 않으면 정규 표현식은 각 요소에 대해 개별적으로 일치하는 것이 아니라 첫 번째 요소의 시작과 마지막 요소의 끝을 일치시킵니다. 내가 추측하고 있긴하지만 이것은 당신에게 해당 될 것 같지 않습니다.

+2

죄송합니다. 'MULTILINE'은 내가 생각한 것과 반대입니다. 당신은 정말로'DOTALL' 플래그 뒤에 있습니다. – Dunes