내가 뭔가에 ":"의 문자열을 대체 할 수없는 것, 여기에 내 코드입니다가 왜 대체 할 수 없습니다 ":"
Exception in thread "Listen" java.util.regex.PatternSyntaxException: Unmatched closing ')'
near index 0
:)
^
어떻게해야합니까?
내가 뭔가에 ":"의 문자열을 대체 할 수없는 것, 여기에 내 코드입니다가 왜 대체 할 수 없습니다 ":"
Exception in thread "Listen" java.util.regex.PatternSyntaxException: Unmatched closing ')'
near index 0
:)
^
어떻게해야합니까?
replaceAll()
; 리터럴 문자열을 교체 할 때 replace()
사용 )
가 특별한 의미, 따라서 오류가있는 regular expressions와
message.replace(":)", replacement)
replaceAll()
거래를.
쓰기 :
message.replaceAll(Pattern.quote(":)"), replacement);
String#replaceAll
이 정규식이 아닌 일반 문자열을 받아들입니다. )
은 quote
을 사용하면 정규식이 아닌 :)
문자열로 :)
을 처리하게되므로 정규식에서 특별한 의미가 있습니다. 당신이 Pattern#quote
를 사용하지 않을 경우
\\
으로
)
을 탈출해야한다. 정규식 이스케이프는
\
에 의해 수행되지만 Java에서는
\
이
\\
으로 작성됩니다.
위에서 언급 한 것이 마음에 들지 않는다면 String#replace
을 사용하면 정규식을 허용하지 않으므로 괜찮습니다.
당신은 regexen에 )
을 탈출해야합니다
message = message.replaceAll(":\\)", replacement);
방금 리터럴 )
를 원하는 정규식을 "에게"할 수 있도록 )
는 특별한 의미 (캡처 그룹)을 가지고 있기 때문이다.
http://stackoverflow.com/questions/9279893/how-to-replace-brackets-in-strings –