Java регулярное выражение для определения конца предложения, НО игнорировать (число) (период), например, 15 - PullRequest
1 голос
/ 16 января 2020

Попытка найти хорошее регулярное выражение для определения конца предложения в java. Основная проблема в том, что если есть число, то точка, он обнаруживает его как конец предложения (см. Демонстрационную ссылку). Но в моем случае я бы предпочел не признавать это как конец предложения, хотя в некоторых случаях это могло бы быть. В документах чаще всего встречаются заголовки разделов, которые выглядят так:

  12.  the end of the world   13. world didnt end  14. nope it did

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

проблема с добавлением решения размещена здесь :

Предлагаемое решение: [!?.] + (? = $ | \ S)

See demo:  http://regex101.com/r/lS5tT3/15

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

   This is the f!!rst *15.* the best sentence! Is this the second one? The third 32.5 sentence is here... And the fourth one!!

Если есть какие-нибудь свисты, которые могут помочь логически добавить, что это не конец предложения, если пробел, но перед ним стоит число, которое было бы весьма полезно

1 Ответ

1 голос
/ 16 января 2020

Это регулярное выражение работает с некоторыми аббревиатурами и правильно распознает маркеры конца предложения. К сожалению, для java string.split мне нужна обратная функция ...

 ([!?]+(?=$|\s))|((?<![\d])(?<!etc)(?<!Mr)(?<!mr)(?<!i.e)(?<!Dr)(?<!dr)(?<!Mrs)(?<!mrs)(?<![ A-Z])(?<!Ms)(?<!ms)(?<!Phd)(?<!u\.s)(?<!U\.S)(?<!\.)[.]{1}(?=$|\s))|
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...