2011-02-10 5 views
3

나는 다음과 같은 코드를 가지고 :또 다른 자바 정규식 질문

patternSource 문자 클래스는 점으로 구성, 빼기 기호와 \의 u2013 문자 (긴 대시 같은)
public static void main(String[] args){ 
    StringBuilder content = new StringBuilder("abcd efg h i. - – jk(lmn) qq zz."); 
    String patternSource = "[.-–]($|)"; 
    Pattern pattern = Pattern.compile(patternSource); 
    Matcher matcher = pattern.matcher(content); 
    System.out.println(matcher.replaceAll("")); 
} 

. 내가 어떤 방법으로 내 문자 클래스의 심볼의 순서를 변경하는 경우에 실행이 나에게

abcefi- jk(lmn) qzz 

를 제공하면, 정상적으로 작동하는 begans 및

abcd efg h i jk(lmn) qq zz 

도대체을 준다?

JDK/JRE에서 테스트 1.6.0_23

답변

4

문자 클래스에 이스케이프 하이픈이있는 경우는 문자 범위로 특별한 의미가 있습니다 : 예를 들면, [A-Z]는 A와 Z 사이의 모든 문자를 의미합니다.

하이픈이 문자 클래스의 시작 또는 끝 부분에있는 경우는 예외입니다.이 경우 문자 그대로 취급되며 하이픈 만 일치합니다.

+0

감사합니다. –

+0

대답을 왼쪽으로 V로 클릭하여 대답하십시오. –

+0

알아,하지만 그 순간에 시간 제한은 아직 경과하지 않았다. –