Хорошо, Pattern.matcher () принимает CharSequence, так что вы можете выполнить операцию сопоставления с исходным компоновщиком, не копируя его в новую строку.
Что касается замены, если она нетривиальна (не текст той же длины), вы, скорее всего, все равно захотите скопировать в новый StringBuilder (как это было бы при поиске / замене с использованием Matcher). в противном случае вы можете в конечном итоге повторно скопировать свои данные много раз в исходном StringBuilder (поскольку любая вставка / удаление в середине StringBuilder требует копирования конечных данных).