본문 바로가기
Language/JAVA

[JAVA] java.util.regex.PatternSyntaxException: Dangling meta character

by 썸머워즈 2020. 6. 1.
반응형

- Exception in thread "main" java.util.regex.PattenSyntaxException: Dangling meta character -


해당 에러는 메타문자로 들어가는 일부 특수문자인

 

?, *, + ,( ,) ,[, ], {, } 와 같은 문자를 replace, replaceAll, split 등을
사용하여 치환 및 나누어주는 기준으로 사용할 때 발생하는 에러이다.

 

나같은 경우는 아래와 같은 에러가 발생하였다.

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0

at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.sequence(Pattern.java:2123)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at java.lang.String.replaceAll(String.java:2223)

at testProject.Test.main(Test.java:10)

 

해결방법은 매우 간단하다.

위에서 나열한 특수문자들은 역슬래쉬 두개 "\\" 이런식으로 붙여줘야 인식해서 에러가 발생을 안한다.

 

예제 1) 해결방안

String replaceTest1 = text1.replaceAll("\\?", "");

예제에서 사용한 물음표 말고도 위에서 나열한 특수문자들은

\\ 를 붙여서 사용하도록 하자.

반응형


댓글

TOP