Substituir enquanto o padrão é encontrado

Eu estou tentando passar por uma seqüência de caracteres e substituir todas as instâncias de uma seqüência de correspondência de expressão regular. Por alguma razão quando eu usoif então ele funcionará e substituirá apenas uma instância de string de uma correspondência de expressão regular. Quando eu mudo oif parawhile então ele faz algum substituto estranho sobre si mesmo e faz uma bagunça na primeira corda de correspondência regex enquanto nem sequer toca os outros ...

        pattern = Pattern.compile(regex);
        matcher = pattern.matcher(docToProcess);
        while (matcher.find()) {
            start = matcher.start();
            end = matcher.end();
            match = docToProcess.substring(start, end);
            stringBuilder.replace(start, end, createRef(match));
            docToProcess = stringBuilder.toString();
        }

questionAnswers(3)

yourAnswerToTheQuestion