2013-04-06 118 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