카테고리 없음

java.util.regex.PatternSyntaxException: Dangling meta character

인천총각 2011. 2. 9. 17:03
String.replace()나 정규표현식을 사용할 때 발생한다.
패턴 스트링에 정규표현식에 사용되는 메타데이타가 포함되어 있을 경우이고
해당 캐랙터는 *, ?, +, [, {, (, }, ^, $에 해당한다.

다음과 같이 escape해서 처리한다.

 patternString = patternString.replaceAll("\\*", "\\\\*");
 patternString = patternString.replaceAll("\\?", "\\\\?");
 patternString = patternString.replaceAll("\\+", "\\\\+");
 patternString = patternString.replaceAll("\\[", "\\\\[");
 patternString = patternString.replaceAll("\\{", "\\\\{");
 patternString = patternString.replaceAll("\\(", "\\\\(");
 patternString = patternString.replaceAll("\\)", "\\\\)");
 patternString = patternString.replaceAll("\\^", "\\\\^");
 patternString = patternString.replaceAll("\\$", "\\\\\\$");

$만 역슬래쉬 갯수가 틀린것에 유의.