Matcher. Как использовать спецсимвол в качестве replacement?

Всем привет, подскажите как через метод appendReplacement класса Matcher заменить найденную группу на спецсимвол? Например, здесь я пробую в качестве replacement передать строку "$$$". Полный пример:

Pattern p = Pattern.compile("(qwe)");
    Matcher m = p.matcher("qwerty");
    StringBuilder b = new StringBuilder();
    m.find();
    m.appendReplacement(b, "$$$");
    m.appendTail(b);
    b.toString();

Ответы (1 шт):

Автор решения: Nowhere Man

Нужно экранировать символы $ в строке-замене при помощи обратного слэша \, который в свою очередь следует экранировать в строках путём удвоения:

    Pattern p = Pattern.compile("(qwe)");
    Matcher m = p.matcher("qwerty");
    StringBuilder b = new StringBuilder();
    m.find();
    m.appendReplacement(b, "\\$\\$\\$");
    m.appendTail(b);
    
    System.out.println(b); // -> $$$rty
→ Ссылка