Correspondência de traços Unicode em expressões regulares Java?

Estou tentando criar uma expressão regular Java para dividir seqüências de caracteres do formato geral "foo-bar" em "foo" e "bar" usando Pattern.split (). O caractere "-" pode ser um dos vários hífens: o ASCII '-', o traço em-, o traço, etc. Eu construí a seguinte expressão regular:

private static final Pattern titleSegmentSeparator = Pattern.compile("\\s(\\x45|\\u8211|\\u8212|\\u8213|\\u8214)\\s");

que, se estou lendo a documentação do Pattern corretamente, deve capturar qualquer um dos traços unicode ou o traço ascii, quando cercado pelos dois lados por espaços em branco. Estou usando o padrão da seguinte maneira:

String[] sectionSegments = titleSegmentSeparator.split(sectionTitle);

Sem alegria Para a entrada de amostra abaixo, o traço não é detectado e titleSegmentSeparator.matcher (sectionTitle) .find () retorna false!

Para ter certeza de que não estava faltando nenhuma entidade de caractere incomum, usei System.out para imprimir algumas informações de depuração. A saída é a seguinte - cada caractere é seguido pela saída de (int) char, que deve ser seu 'ponto de código unicode, não?

Entrada de amostra:

Resumo do Estudo (1 de 10) - Competição

S (83) t (116) u (117) d (100) y (121) (32) S (83) u (117) m (109) m (109) a (97) r (114) y (121 ) (32) ((40) 1 (49) (32) o (111) f (102) (32) 1 (49) 0 (48)) (41) (32) - (8211) (32) C ( 67) o (111) m (109) p (112) e (101) t (116) i (105) t (116) i (105) o (111) n (110)

Parece-me que esse traço é o codepoint 8211, que deve corresponder ao regex, mas não é! Oque esta acontecendo aqui?

questionAnswers(1)

yourAnswerToTheQuestion