Как написать регулярку?

no_santa

Снегур
Как написать регулярку?

Как написать регулярку, чтобы разбить большой текст на блоки из нескольких абзацев?

Так, чтобы в одном блоке было не более чем 1024 символа - с округлением до предпоследнего \ n, если нет \n - тогда резать жестко до последней точки, если нет точки - до последнего пробела, если нет пробела - жестко 1024.

Если без внешнего алгоритма нельзя - тогда как написать регулярку, чтобы разбивать до 1024 с округлением до предпоследнего \ n ?

-~{}~ 27.11.09 22:37:

А это вообще можно регуляркой сделать?

-~{}~ 27.11.09 23:48:

то есть порезать текст на страницы так, чтобы абзацы не рвались по возможности?
 

dimagolov

Новичок
по-моему одной регуляркой это делать глупо.
1. ищем позиции \n
2. последовательно откусываем от начала фрагменты < 1024
3. если нет возможности сделать п.2 на какой-то итерации, то циклом по фрагменту от символа в позици 1023 и раньше ищем точку. Если нашли, то откусываем и продолжаем п.2
4. аналогично п.3 только пробел
5. текст выкидывам нафиг, так как 1024 символа без пробелов это не текст а фигня.
 

no_santa

Снегур
я сделал руками:
1. Тупо режу на абзацы
2. Нестабильным циклом собираю абзацы в страницы. Если абзац больше лимита - рву его. Кстати, довольно удобно получилось ловить отступы....

Работает, только сомнения такие тревожат:
1. Регуляркой - гламурнее?
2. Регуляркой - быстрее?

-~{}~ 28.11.09 00:35:

Ну да, Дим, режу как ты сказал, \ n , {.|...|!|?}, пробел, return FALSE
 

cDLEON

Онанист РНРСlub
Гламурнее всего решить этот вопрос на автоматах
 
Сверху