另一个Java正则表达式问题

另一个Java正则表达式问题,java,regex,Java,Regex,我有以下代码: 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 = p

我有以下代码:

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(""));
}
其中patternSource字符类由点、减号和\u2013字符(类似于长破折号)组成。在我被处决后

abcefi-  jk(lmn) qzz
如果我以任何方式更改我的角色类中符号的顺序,它将开始正常工作,并给出

abcd efg h i jk(lmn) qq zz
怎么回事


在JDK/JRE 1.6.0_23下测试

如果在字符类中有一个不带换行符的连字符,它作为一系列字符具有特殊含义:例如,[a-Z]表示a和Z之间的所有字符


例外情况是,连字符位于字符类的开头或结尾,在这种情况下,它会被逐字处理,并且只匹配一个连字符。

单击左侧的V,将此答案标记为已回答。我知道,但当时的时间限制尚未过。