2012-05-10 52 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