Разбить текст на части

vanjan

Client
Регистрация
22.01.2017
Сообщения
3
Благодарностей
2
Баллы
3
Добрый вечер, такая проблема.
Ввиду своей некомпетентности в составлении регулярных выражений, ни как не могу выполнить задачу.
Есть текст, неизвестно сколько символов.
Требуется разбить его на части ПРИМЕРНО по N символов.(т.е. N+- 500 символов) Но при этом, что бы разрыв частей, был строго после окончания предложения, а не к примеру по середине предложения или даже по середине слова.
Поиск по форуму дал только это ^.[\w\W]{0,8000}(\.|\?|\!|\s)
Но с помощью этого получается брать только первую часть. Я думал что получится вот так ^.[\w\W]{8000,16000}(\.|\?|\!|\s) взять следующую часть текста, но увы, потерпел крах.
Прошу помощи, ибо я за*бался уже
Заранее спасибо)
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 557
Благодарностей
8 727
Баллы
113
Добрый вечер, такая проблема.
Ввиду своей некомпетентности в составлении регулярных выражений, ни как не могу выполнить задачу.
Есть текст, неизвестно сколько символов.
Требуется разбить его на части ПРИМЕРНО по N символов.(т.е. N+- 500 символов) Но при этом, что бы разрыв частей, был строго после окончания предложения, а не к примеру по середине предложения или даже по середине слова.
Поиск по форуму дал только это ^.[\w\W]{0,8000}(\.|\?|\!|\s)
Но с помощью этого получается брать только первую часть. Я думал что получится вот так ^.[\w\W]{8000,16000}(\.|\?|\!|\s) взять следующую часть текста, но увы, потерпел крах.
Прошу помощи, ибо я за*бался уже
Заранее спасибо)
можно например так..
с помощью регулярки:
Код:
.*?(\.|!|\?)
разбить текст на предложения построчно, положить их в список (по предложению на строку)..
брать из этого списка по одной первой строке (предложению) с удалением и добавлять ее (его) в промежуточный список, одновременно ведя подсчет кол-ва символов,
как только кол-во символов в промежуточном списке перевалило за 500, объединять получившийся список в переменную с разделителем {-String.Space-} и записывать куда надо, например в еще один список (список блоков предложений)..
и так, пока не закончится исх. построчный список предложений..
и потом уже работаем со списком, в котором находятся собранные блоки предложений..

либо через Обработка текста - Regex брать этой же регуляркой по наращиваемому счетчику-номеру совпадения отдельные предложения, а далее кладем в промежуточный список с подсчетом кол-ва символов и т.д..
 
Последнее редактирование:
  • Спасибо
Реакции: termit

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 604
Баллы
113
Добрый вечер, такая проблема.
Ввиду своей некомпетентности в составлении регулярных выражений, ни как не могу выполнить задачу.
Есть текст, неизвестно сколько символов.
Требуется разбить его на части ПРИМЕРНО по N символов.(т.е. N+- 500 символов) Но при этом, что бы разрыв частей, был строго после окончания предложения, а не к примеру по середине предложения или даже по середине слова.
Поиск по форуму дал только это ^.[\w\W]{0,8000}(\.|\?|\!|\s)
Но с помощью этого получается брать только первую часть. Я думал что получится вот так ^.[\w\W]{8000,16000}(\.|\?|\!|\s) взять следующую часть текста, но увы, потерпел крах.
Прошу помощи, ибо я за*бался уже
Заранее спасибо)
[\w\W]{0,8000}[.!?]+
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)