Я хотел бы заменить некоторые шаблоны в строке на вызов функции для обнаруженных групп.
Более конкретно, я хотел бы, например, преобразовать
String input = "normal <upper> normal <upper again> normal";
в
String output = "normal UPPER normal UPPER AGAIN normal";
Регулярное выражение \<(.*?)\>"
должно обнаружить шаблон, который я хочу преобразовать, но с использованием
output = input.replaceAll("\\<(.*?)\\>", "$1".toUpperCase());
не работает, потому что логически он помещает $1
в верхний регистр, то есть ничего не происходит, прежде чем обрабатывать его внутри метода.
Кроме того, метод, который я хочу применить, должен вызываться со строкой замены в качестве аргумента; таким образом, «неправильный наивный путь» был бы чем-то вроде
output = input.replaceAll("\\<(.*?)\\>", transform("$1"));
Вы знаете какой-нибудь трюк, чтобы сделать это?