2013-04-06 252 views
0

我正在做模式匹配matcher.matches來作爲false,而matcher.replaceAll實際上找到了模式並將其替換。此外,matcher.group(1)正在返回一個異常。Java模式匹配正則表達式

@Test 
public void testname() throws Exception { 
    Pattern p = Pattern.compile("<DOCUMENT>(.*)</DOCUMENT>"); 
    Matcher m = p.matcher("<RESPONSE><DOCUMENT>SDFS878SDF87DSF</DOCUMENT></RESPONSE>"); 
    System.out.println("Why is this false=" + m.matches()); 
    String s = m.replaceAll("HEY"); 
    System.out.println("But replaceAll found it="+s); 

} 

我需要matcher.matches()返回true,並且matcher.group(1)提前返回 「< DOCUMENT> SDFS878SDF87DSF </DOCUMENT>」

感謝您的幫助。

回答

2
final Pattern pattern = Pattern.compile("<DOCUMENT>(.+?)</DOCUMENT>"); 
final Matcher matcher = pattern.matcher("<RESPONSE><DOCUMENT>SDFS878SDF87DSF</DOCUMENT></RESPONSE>"); 
if (matcher.find()) 
{ 
    System.out.println(matcher.group(1)); 
    // code to replace and inject new value between the <DOCUMENT> tags 
} 
+0

我能有這樣的事情爲XML 「 ... SDFS878SDF87DSF ...」 我需要提取和替換文檔部分。 – saad 2013-04-06 16:51:57

+0

然後你的問題措辭錯誤,如果你想提取''標籤之間的文字。我會更新我的答案。 – syb0rg 2013-04-06 16:54:56

+0

謝謝你,工作。 – saad 2013-04-06 17:18:55