Перепроверьте свой синтаксис. Читайте "порядок оценки".
hm.get("$1")
будет искать запись в хэш-таблице с ключом точно"$1
". Которого не существует, так что вы вернетесь null
. Регулярное выражение на данный момент еще не применено, и нет никакого утверждения, которое заменило бы $1
на группу.
Линия
String result = s.replaceAll("<([^>]*)>", hm.get("$1"));
эквивалентно:
String nulLValue = hm.get("$1"); // Note: $1 is not substituted.
String result = s.replaceAll("<([^>]*)>", nullValue);
Посмотрите на различные примеры Java, включающие Pattern
и связанные Matcher
s.