Как разбить текст на предложения

Мне нужно разбить текст на предложения. у меня есть шаблон

(?<=[.!?]|[.!?]['"])(?=\p{javaWhitespace}*\p{javaUpperCase}).

Но он разбивает предложение типа Max (v. Village) - programmer. на два предложения Max (v. и Village) - programmer., но я ожидал одно предложение. Слишком много примеров:

I am Max. I am 19. -> I am Max., _I am 19

She likes him(Dr. Web). Abc. -> She likes him(Dr. Web)., _Abc.

не She likes him(Dr., _Web)., _Abc..

Я попытался завершить регулярное выражение для проверки последовательности скобок, но не смог.

Каков ваш ожидаемый результат?

Toto 02.02.2019 14:23

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

Pushpesh Kumar Rajwanshi 02.02.2019 14:37

Я не совсем понимаю проблему здесь, если это работает, вы также можете использовать docs.oracle.com/javase/6/docs/api/java/lang/… Split с ограничением

cperez08 02.02.2019 14:58

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

plalx 02.02.2019 15:24

Вы просто хотите сохранить текст внутри круглых скобок вместе? Или это тоже приговор-My name is Dr. Web.?

rustyx 02.02.2019 15:25

@plalx, ​​вы правы, но это хороший пример для изучения специальных конструкций Pattern.

Alvin Max 02.02.2019 15:27

@rustyx ваш пример продвинут. Мне полезно разделить его на два предложения. Я хочу правильно разделить предложения скобками.

Alvin Max 02.02.2019 15:30

Итак, какой алгоритм вам нужен? Разделить по знакам препинания, если только они не заключены в круглые скобки, квадратные скобки или кавычки?

plalx 02.02.2019 15:34

В базовом случае, если вы хотите проверять скобки в регулярном выражении, вам нужно экранировать его, используя "(" Возможно, вам придется использовать "\(" в зависимости от вашего языка, поскольку сам обратный слеш также должен быть экранирован, чтобы быть распознанным как литерал персонаж.

Yamuk 02.02.2019 15:44

@plalx да. Мне интересно, как это сделать с шаблоном хотя бы для предложений с одинарными скобками

Alvin Max 02.02.2019 15:52

@AlvinMax: Почему у вас есть подчеркивание перед вторым предложением? Это сделано намеренно и они вам действительно нужны, или достаточно просто разделить предложение?

Pushpesh Kumar Rajwanshi 02.02.2019 16:34

@PushpeshKumarRajwanshi Я не хочу терять пробелы. Это работа с моей выкройкой. Мне очень нужно решить проблему с скобками.

Alvin Max 02.02.2019 16:40

@AlvinMax: при разделении, если вы разделите по нулевой ширине, вы ничего не потеряете. Но это приведет к появлению дополнительного пробела перед вторым предложением, что может быть нежелательно. Поэтому, если вы хотите избавиться от этого лишнего пространства, разделение может быть выполнено с использованием пробелов, которые соответствуют вашему регулярному выражению. Позвольте мне опубликовать ответ, и там вы можете сообщить мне, если вам нужно, чтобы я что-то еще изменил.

Pushpesh Kumar Rajwanshi 02.02.2019 16:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
13
90
0

Другие вопросы по теме