Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос по поиску с регулярными выражениями - разбить текст по предложениям в массив
 
 автор: qru   (02.05.2008 в 15:28)   письмо автору
 
 

Добрый день..

Задача у меня следующия - необходимо найти в тексте окончания предложений и разбить текст по предложениям в массив.

Если использовать к примеру $text1mas = explode (". ", $text1); то строки с инициалами и т.п. разбиваются не верно (ведь точка там - не конец предложения).

Я пытался использовать такое вот регулярное выражение (php не русский у меня на хосте):
'[АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯабвгдеёжзийклмнорпстуфхцчшщъьыэюяA-Za-z]+(\.)( )[АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯA-Z][АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯабвгдеёжзийклмнорпстуфхцчшщъьыэюяA-Za-z]*'
Но сколько функций разных не перепробывал (типа preg_match, split и т.п) - никак не получается сделать чтобы разбивка происходила в определенном месте регулярного выражения (там где пробел)...

При этом ничего страшного если в некоторых ячейках массива попадет не одно а 2-3 предложения.

Буду признателен за помощь.. Возможно есть какая-то функция или комбинация функций для осуществления пободного действия.

   
 
 автор: sil   (02.05.2008 в 23:39)   письмо автору
 
   для: qru   (02.05.2008 в 15:28)
 

Предложения можно писать по разному.
даже совсем без пробелов и в любом регистре,
можно только пробовать угадать опираясь только на регистр букв и пробелы после знаков например
<pre><?php
$txt 
'ничего страшного если в некоторых ячейках массива попадет не одно а 2-3 предложения.
Буду признателен за помощь.. Возможно есть какая-то функция или комбинация функций для осуществления пободного действия.

Tекст  img.jpg  Мин. сокращение не защитывается если нет последующих Заглавных букв.
Инициалы Х. Х. не защитываются если нет пробелов перед .'
;

print_r(
  
$array preg_split('#(?<=[a-zа-яё\.\s](\.|\?|\!))\s+(?=[A-ZА-ЯЁ])#s'$txt, -1PREG_SPLIT_NO_EMPTY)
    );


?></pre>

   
 
 автор: qru   (05.05.2008 в 00:36)   письмо автору
 
   для: sil   (02.05.2008 в 23:39)
 

Эх.. Спасиб за ответ. Но я уже решил проблему написав следующее выражение..

preg_split("/(?<=[А-Яа-яA-Za-z]{3}[.?!])\s+(?=[А-ЯA-Z][А-Яа-яA-Za-z]+)/", $qrutext1);

   
 
 автор: ONYX   (07.05.2008 в 06:55)   письмо автору
 
   для: qru   (05.05.2008 в 00:36)
 

<?
$txt = 'бла раз два';
print_r(preg_split('/[^\w]+/',$txt));
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования