public String substitute(Substitution substitution) { MatchResult matchResult = new JdkMatchResult(internalMatcher); StringBuffer buffer = new StringBuffer(); while (internalMatcher.find()) { internalMatcher.appendReplacement(buffer, ""); substitution.handleMatch(buffer, matchResult); } internalMatcher.appendTail(buffer); return buffer.toString(); }