Возможно, вам нужно два "\" перед "b":
test.replaceAll("<font\\b(.*)>", "Something");
Это нужно вам, потому что регулярное выражение является строкой, а обратные слеши необходимо экранировать в строках.
Чтобы он соответствовал только первому «>», сделайте следующее:
test.replaceAll("<font\\b(.*?)>", "Something");
Это сделает *
«ленивым», так что он будет совпадать как можно меньше, а не как можно больше.
Однако, кажется, что лучше написать это конкретное выражение следующим образом:
test.replaceAll("<font\\b([^>]*)>", "Something");
Это имеет тот же эффект и позволяет избежать обратного отслеживания, что должно повысить производительность.