Я использую Matcher.appendReplacement(), и он отлично работал, пока в моей заменяющей строке не было $2:
Обратите внимание, что обратная косая черта (\) и доллар знаки ($) в заменяющей строке может привести к тому, что результаты будут разными чем если бы он рассматривался как буквальная строка замены. доллар знаки могут рассматриваться как ссылки на захваченные подпоследовательности, как описано выше, а обратная косая черта используется для исключить буквенные символы в строка замены.
Есть ли способ удобства где-нибудь, который избежит всех обратных косых черт\и знаков доллара $с обратным слэшем? Или я должен написать сам? Похоже, это не так сложно, просто было бы неплохо, если бы они дали вам один > : (
изменить:, так как они дают вам один, мне нужно replace(">:(", ":-)");