문서의 이전 판입니다!
Matcher.appendReplacement()를 이용해서 matcher.appendReplacement(sb, “역슬래시 혹은 $가 존재하는 값”);
을 실행하면 오류가 발생할 수 있다.
이유는 appendRaplacement() 메소드가 역슬래시와 $를 정규표현식의 특수문자로 취급하기 때문이다.
이와 관련해서는 Matcher.appendReplacement() javadoc 문서에도 언급이 돼 있다.
이문제를 해결하려면, 다음과 같이 역슬래시와 $를 escape해줘야 한다.
String value = valueToReplace.replaceAll("\\\\", "\\\\\\\\").replaceAll("\\$", "\\\\\\$"); matcher.appendReplacement(sb, value);