Есть ли способ заменить регулярное выражение измененным содержимым группы захвата?
Пример:
Pattern regex = Pattern.compile("(\\d{1,2})");
Matcher regexMatcher = regex.matcher(text);
resultString = regexMatcher.replaceAll("$1"); // *3 ??
И я бы хотел заменить все вхождение на $1, умноженное на 3.
изменить
Похоже, что-то не так: (
Если я использую
Pattern regex = Pattern.compile("(\\d{1,2})");
Matcher regexMatcher = regex.matcher("12 54 1 65");
try {
String resultString = regexMatcher.replaceAll(regexMatcher.group(1));
} catch (Exception e) {
e.printStackTrace();
}
Он выдает исключение IllegalStateException: совпадение не найдено
Но
Pattern regex = Pattern.compile("(\\d{1,2})");
Matcher regexMatcher = regex.matcher("12 54 1 65");
try {
String resultString = regexMatcher.replaceAll("$1");
} catch (Exception e) {
e.printStackTrace();
}
работает нормально, но я не могу изменить $1: (
изменить
Теперь он работает:)