{}
- это специальный символ регулярного выражения, представляющий оператор диапазона, поэтому перед его использованием вы должны выйти из него
// normal use
"".replaceFirst("a{1,2}","");
Как показано, {}
распознается как диапазон, чтобы соответствовать минимальным и максимальным значениям a
, поэтому при использовании регулярного выражения вы должны указать какой-либо символ / слово вместе с минимальным и максимальным значением с помощью оператора диапазона {}
(в противном случае это может привести к аварийному завершению работы механизма регулярного выражения или к непредсказуемому поведению, поэтому компилятор будет активен здесь)
решение: убежать, используя \\
uri = uri.replaceFirst("\\{\\}",param.toString());