replace / replaceFirst, Caused by: java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0

2013. 8. 1. 10:36Language/Java

반응형

 

 

이런...내가 잘못 학습을 한건가...

 

replace가 하나만 치환이 되어지는 것이고 replaceAll이 전부 치환 시키는 것으로 알고 있었다..-_-;

그런데..replace를 사용했을 경우 전부 치환이 되어지는 것이다..ㅠ_ㅠ...

그래서 혹시나 해서 봤더니...replaceFirst가 있네....OTL

 

?를 찾아서 내가 원하는 문자열로 치환하고 싶었다.

아래와 같이 오류가 발생했다.

 

Caused by: java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0

 

바로..? 라는 특수문자는 그냥 사용 할 수가 없다.

 

소스는 아래와 같다.

 

보통 특수문자를 자바에서 표현 할 때 \를 붙여서 사용하지만 replaceFirst는 정규표현식 스트링이다. 쓰임새는 \\를 붙여서 처리 한다.


참고사항 


자바의 특수문자와 그 기능 
\n        u000A           new line
\t         u0009           tab
\r         u000D           return
\f         u000C           form feed
\\         u005C           backsalsh
\'          u0027          single quote
\"         u0022          double quote

\b         u0008          backspace 


replaceAll()에....

1.[]씌워야 할 것들

*  ⇒ [*]
+  ⇒ [+]
$  ⇒ [$]
|  ⇒ [|]


2. \\를 붙여줘야 하는 것들.

( ⇒ \\(
) ⇒ \\)
{ ⇒ \\{
} ⇒ \\}
^ ⇒ \\^
[ ⇒ \\[
] ⇒ \\]


3. 자바의 특수문자는 \을 쓴다.

 " ⇒ \"


4. 나머지 부호들은 괜찮은 듯 하다.
확인된 것.

! # % & @ ` : ; - . < > , ~ '

[출처] 자바 특수문자|작성자 카제

 


 참고 사이트 : http://blog.naver.com/kim22922?Redirect=Log&logNo=80097490823


                   - END -

 

반응형

'Language > Java' 카테고리의 다른 글

java 정규표현식 - String의 숫자문자 검증  (0) 2013.09.12
[Eclipse] comment 자동으로 생성하기  (0) 2013.08.23
번들 property 만들기  (0) 2013.05.10
JMS란?  (1) 2013.01.07
MySQL+Apache Tomcat 6.0 JNDI Datasource How to  (2) 2012.12.12