2013-04-06 7 views
0

Я делаю шаблон, совпадающий с matcher.matches подходит как false, а matcher.replaceAll фактически находит шаблон и заменяет его. Также matcher.group (1) возвращает исключение.Java Pattern matching regex

@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() возвращает истинно, и matcher.group (1) для возврата "< документа> SDFS878SDF87DSF </Документ>"

Заранее спасибо за помощь ,

ответ

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

+0

Тогда ваш вопрос сформулирован неправильно, если вы хотите извлечь текст между тегами ''. Я уточню свой ответ. – syb0rg

+0

Спасибо, что сработало. – saad