Соответствие штрихам Unicode в регулярных выражениях Java?

Я пытаюсь создать регулярное выражение Java для разделения строк общего формата "foo - bar" на "foo" и "bar" с помощью Pattern.split (). Символ «-» может быть одним из нескольких тире: ASCII '-', em-тире, en-тире и т. Д. Я создал следующее регулярное выражение:

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

который, если я правильно читаю документацию по шаблону, должен захватывать любые штрихи юникода или штрихи ascii, когда они окружены с обеих сторон пробелом. Я использую шаблон следующим образом:

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

Нет радости В приведенном ниже примере ввода черточка не обнаружена, и titleSegmentSeparator.matcher (sectionTitle) .find () возвращает false!

Чтобы убедиться, что я не пропустил какие-либо необычные символьные объекты, я использовал System.out для печати некоторой отладочной информации. Вывод выглядит следующим образом - за каждым символом следует вывод (int) char, который должен быть его кодовой точкой Юникода, нет?

Пример ввода:

Краткое содержание исследования (1 из 10) - Конкурс

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) о (111) м (109) р (112) е (101) т (116) г (105) т (116) г (105) о (111) п (110)

Мне кажется, что эта черта - это кодовая точка 8211, которая должна соответствовать регулярному выражению, но это не так! Что тут происходит?

Ответы на вопрос(1)

Ваш ответ на вопрос