Matching Unicode Bindestriche in regulären Java-Ausdrücken?

Ich versuche, einen regulären Java-Ausdruck zu erstellen, um Strings des allgemeinen Formats "foo-bar" mit Pattern.split () in "foo" und "bar" zu unterteilen. Das Zeichen "-" kann aus mehreren Bindestrichen bestehen: dem ASCII-Zeichen "-", dem Bindestrich "em", dem Bindestrich "en" usw. Ich habe den folgenden regulären Ausdruck erstellt:

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

enn ich die Pattern-Dokumentation richtig lese, sollte @which einen der Unicode-Striche oder den ASCII-Strich erfassen, wenn er auf beiden Seiten von Leerzeichen umgeben ist. Ich benutze das Muster wie folgt:

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

Keine Freude. Bei der folgenden Beispieleingabe wird der Bindestrich nicht erkannt und titleSegmentSeparator.matcher (sectionTitle) .find () gibt false! @ Zurüc

Um sicherzustellen, dass keine ungewöhnlichen Zeichenelemente fehlen, habe ich System.out verwendet, um einige Debug-Informationen auszudrucken. Die Ausgabe ist wie folgt: Auf jedes Zeichen folgt die Ausgabe von (int) char, die der Unicode-Codepunkt sein sollte, no?

Beispieleingabe:

Study Zusammenfassung (1 von 10) - Competition

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)

Es sieht für mich so aus, als wäre der Bindestrich der Codepoint 8211, der von der Regex abgeglichen werden sollte, ist es aber nicht! Was ist denn hier los