카테고리 없음
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("\\$", "\\\\\\$");
$만 역슬래쉬 갯수가 틀린것에 유의.
패턴 스트링에 정규표현식에 사용되는 메타데이타가 포함되어 있을 경우이고
해당 캐랙터는 *, ?, +, [, {, (, }, ^, $에 해당한다.
다음과 같이 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("\\$", "\\\\\\$");
$만 역슬래쉬 갯수가 틀린것에 유의.