Прежде всего, как было сказано и будет сказано снова, использование регулярных выражений для XML обычно является плохой идеей. Но для действительно простых случаев это может сработать, особенно если вы можете жить с неоптимальными результатами.
Итак, просто поместите тест в группу и замените только группу
Что-то вроде
Pattern replacePattern = Pattern.compile(">[^<]*(TEST)");
Matcher matcher = replacePattern.matcher(theString);
String result = theString.substr(1,matcher.start(1)) + replacement + theString.substr(matcher.end(1));
Отказ от ответственности: не тестировался, может иметь некоторые посторонние. Но концепция должна быть ясной.