illegal group reference 본문

java

illegal group reference

violet4795 2019. 8. 13. 17:28

개발하는 사이트의 비밀번호 변경과정에서 발생한 에러

 

여느 사이트에도 비슷한 경험담이 있어 그것과 같이 해결했으며, 기록함

 

 

 

key, value 형식으로 메일 템플릿에 비밀번호를 넣는 과정에서 replaceAll함수를 사용하는 과정이 있었는데

 

비밀번호에 "$'가 포함되어 있으면 에러가 발생하였다.

 

자바 공식 문서에서 replaceAll의 사용

 

 

 

함수 내부로 들어가보면 Matcher클래스의 replaceAll 함수 내에 

do{ // sb 는 stringBuffer, replacement는 바꿀 문자열이다.

      appendReplacement(sb, replacement); 

} while

 

로 구현이 되어있고

 

appendReplacement를 보면 바꿀문자열을 charAt으로 쪼개서 

 

nextChar에 담고 그것을 \\인지 $인지 if else로 비교하고 있다

 

여기서 던진 에러 Illegal group reference였다.

 

그래서 원점으로 돌아오면 결국 $나 \\는 에러를 발생시키기 때문에

 

넘기는 값을 미리 .replaceAll("[$]", "\\\\\\$");

 

$값을 \$값으로 변환해서 다시 replaceAll로 넘겨주니 원하는 동작이 구현되었다.

'java' 카테고리의 다른 글

Java 심화  (0) 2019.05.25
객체의 주소값 비교 메소드 System.identityHashCode Object.hashCode  (0) 2019.01.10
java reflection  (0) 2018.11.30