У меня есть следующий код:
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