java.lang.IllegalArgumentException: Illegal group reference replaceAll 하던중 에러


위에 같이 에러 날때 처리 하는 법. 


문제 발생 원인은 아래 특수 문자 때문에 발생한 문제였다.  

변경될 문자를 java.util.regex.Matcher.quoteReplacement 문자를 이용하여 치환후에 변경하니 처리가 완료됨. ㅎ 



public class GenText {

public static void main(String[] args) {

String str = "asdf$replaceColGroupInfo$asd";

StringBuffer replaceSb = new StringBuffer();

replaceSb.append("{test:\"NaturalGas-미국HenryHub현물($/mmbtu)\"}");

try{

//에러 내용 특수문자  $ 때문에 발생한 문제 였다. 

System.out.println(str.replaceAll("\\$replaceColGroupInfo\\$",replaceSb.toString()));

}catch(Exception e){

System.out.println("error 내용 : "+e.getMessage());

}

System.out.println("변경될 문자의 치환 :  "+java.util.regex.Matcher.quoteReplacement(replaceSb.toString()));

// 해결 

System.out.println("처리완료 : " + str.replaceAll("\\$replaceColGroupInfo\\$",java.util.regex.Matcher.quoteReplacement(replaceSb.toString())));

// 위와 같이 java.util.regex.Matcher.quoteReplacement를 이용해서 변경될 문자의 문자를 변경시켜줘야 에러가 처리 되었다. 

}

}



+ Recent posts