Как сказал Мат, лучший способ решить эту проблему - использовать URLEncoder.Однако, если вы настаиваете на использовании регулярных выражений, то посмотрите пример кода в документации для java.util.regex.Matcher.appendReplacement
:
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("one cat two cats in the yard");
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, "dog");
}
m.appendTail(sb);
System.out.println(sb.toString());
В цикле вы можете использовать m.group()
, чтобы увидеть, какая подстрока соответствует, и затем выполнитьвыборочная замена на основе этого.Эту технику можно использовать для замены $ {переменных} путем поиска их на карте и т. Д.