Как поделить текст на абзацы по количеству предложений?

Статус
В этой теме нельзя размещать новые ответы.

azs

Постоялец
Регистрация
24 Дек 2007
Сообщения
149
Реакции
147
Подскажите как можно поделить текст на абзацы.
Имеем: файл txt в котором много статей. Каждая статья с новой строки.
у статьи есть заголовок, после него тоже перенос строки, далее идет текст статьи сплошняком.
вопрос 1: как вообще абзац может выделяться ( с помощью каких знаков)
вопрос 2: как можно текст разделить на абзацы по три-четыре предложения в каждом.

Использую Textpipe Pro. Такая схема \w+\s\w+\046пробел определяет одно предложение схема egrep, но как сделать три? {3} не помогает.
 
Кусок файла приложи
 
Regexp регуляр: "#(.*?\. ){3}#"

Тестил так:
Код:
<?
$text = "А. Рикошинский В сентябре 2006 г. принято постановление правительства Московской области № 884/36 об утверждении Программы «Развитие транспортно-логистической системы в Московской области в 2006–2010 годах». В документе прописаны сроки, перечень и механизм реализации схемы территориального планирования Московской области (МО) в части создания объектов капитального строительства регионального значения. Реализация программы позволит в ближайшие пять лет превратить область в основной узел логистики грузопотоков европейской части России на базе формирования единой системы транспортно-логистических узлов и центров приема, хранения, перевалки и распределения товаров. За этот период посредством развития складской инфраструктуры в Подмосковье планируется создать более 40 тыс. рабочих мест, построить 9,2 млн. м складских помещений и 700 тыс. м офисов. Помимо этого запланировано сооружение трех контейнерных и грузоперерабатывающих терминалов, 29 логистических центров. В качестве основной цели Программы декларируется повышение качества жизни населения, сглаживание дифференциации в уровнях развития муниципальных образований посредством улучшения инвестиционного климата и последовательного превращения МО в основной узел логистики грузопотоков европейской части России на базе формирования на ее территории единой системы транспортно-логистических узлов и центров приема, хранения, перевалки и распределения товаров. Необходимость принятия Программы вызвана объективными показателями развития МО, которая в последние пять лет достигла и устойчиво сохраняет высокие темпы экономического развития. По макроэкономическим показателям область занимает лидирующие позиции среди субъектов России. Валовой региональный продукт здесь в 2005 г. превысил 720 млрд. руб. и вырос более чем на 12% по сравнению с 2004 г. Оборот организаций МО в действующих ценах достиг 1937 млрд. руб. и увеличился более чем на треть. При этом в строительстве рост составил почти 2 раза, в здравоохранении и социальном обеспечении, торговле, транспорте и связи, электро- и газораспределении — более чем 1,3 раза. Сохраняются высокие темпы развития потребительского рынка. По объему розничного товарооборота область устойчиво занимает второе место в России, уступая только Москве. В 2005 г. суммарный объем торговли и платных услуг населению на территории МО превысил 880 млрд. руб. С учетом реализации национальных проектов, политики областных органов государственной власти по обеспечению роста реальных доходов населения и реализации мероприятий программы Правительства МО по развитию потребительского рынка и услуг в период до 2010 г. здесь прогнозируется дальнейший рост потребительского спроса и объемов розничной торговли и платных услуг населению с темпом не менее 15...17% в год. Увеличение потребительского спроса стабильно высокими темпами обеспечивает устойчивость темпов роста промышленности и сельского хозяйства. Оборот организаций обрабатывающей промышленности по итогам 2005 г. вырос на 23%, сельского хозяйства — на 16%. Объем промышленного производства превысил 500 млрд. руб. Индекс промышленного производства составил 129,6%. Процесс реструктуризации экономики МО продолжается преимущественно путем создания новых предприятий, ориентированных на производство потребительских товаров высокого качества. В 2005 г. создано 15 474 новых предприятия, из них 352 с иностранным капиталом.";

preg_match_all("#(.*?\. ){3}#", $text, $matches);
var_dump($matches);
?>
 
  • Нравится
Реакции: azs
Недостаток шаблона в том, что
HTML:
"А. Рикошинский В сентябре 2006 г. принято
Он считает за 3 предложения. Нужно ввести доп проверку на количество символов.
 
Недостаток шаблона в том, что
HTML:
"А. Рикошинский В сентябре 2006 г. принято
Он считает за 3 предложения. Нужно ввести доп проверку на количество символов.
Тогда это не регуляр будет уже. Пусть в пхп ветке создает тему - поможем
 
А нельзя ли прописать исключения? вроде такой знак -^ , и нем учесть, что не учитываются:
1 точки после одной заглавной буквы. как-то так [^А-Я\.]
2 точки если следующее слово с прописной буквы. [^\.\255\а-я0-9]
3 точки если после них нет пробела

в texpipe можно выставить галочку-учитывать регистр. \255 - вроде это пробел можно так описать.
 
regexp: "#(.*?[а-я]\.\x20(?=[А-Я])){3}#"
 
  • Нравится
Реакции: azs
На основе Для просмотра ссылки Войди или Зарегистрируйся
Код:
{
\G\s*+(?:(?:
    [а-яёa-z]++|
    [^.\n?!а-яёa-z\d("]++(?:[!?]++)?|
    \.(?:\.*+)
       [^а-яёa-z.?!\n]*+(?:\n[^а-яёa-z.?!\n]*+)?
       (?=(?-i:[а-яёa-z]))|
    (?<=\b[а-юa-z])\.|
    \.(?!\.)(?<=\bмлрд|\bмлн|\bтыс|\bруб|\bгг)|
    \n[^а-яёa-z.?!\n]*+(?=(?-i:[а-яёa-z]))|
    \d++(?:\.\d++)?|
    (?:("(?=[^\s.]).*?(?<=[^\s])"|"))|
    (?:\((?=[^\s.]).*?(?<=[^\s])\)|\( )
)+
[?!\n.]*\s*+){1,3}
}xsi
 
  • Нравится
Реакции: azs
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху