Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Подскажите на счет регулярки
цитата
21/04/14 в 22:30
 Reminder
Решение найдено - файл с текстом был в кодировки windows-1251, а скрипт в UTF-8.

Хочу получить из текста предложения, использую.
$pattern = "|[А-Я](.*?)[.!?]|si";

Но на ряду со стандартными предложениями - которые начинаются с заглавной и заканчиваются .?!. Регулярка тянет и такие, начинающиеся с дефиса.
Ex.
— Хм… — Он будет очень послушный кот.

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

Последний раз редактировалось: Reminder (22/04/14 в 09:39), всего редактировалось 1 раз
цитата
21/04/14 в 22:39
 Sterx
модификатор i попробуй убрать
цитата
21/04/14 в 22:54
 Reminder
Sterx: - по прежнему предложения с дефисами тоже отдаются (

Массив
[1] => Конрад Лоренц Вместо вступления: Обыкновенная история Вы завели себе кота?
[2] => Вы долго выбирали, держали домашний совет.
[3] => — Нет, — говорил Хозяин, — кот в доме, это излишество.
[4] => — Милый, — ворковала Хозяйка, — он тебе ничуть не помешает, он будет невидимым и неслышимым… — Но вонючим, — не сдавался Хозяин.
[5] => — Нет-нет, — хватала его за рукав Хозяйка, — сейчас коты не такие…они не пахнут!
[6] => Их опрыскивают!
цитата
22/04/14 в 08:08
 freeek
Пример текста и что из этого текста надо забрать?
цитата
22/04/14 в 08:54
 shlemkin
дык все работает.
Код:
<pre>
<?
$s = 'Конрад Лоренц Вместо вступления: Обыкновенная история Вы завели себе кота?
Вы долго выбирали, держали домашний совет.
— Нет, — говорил Хозяин, — кот в доме, это излишество.
— Милый, — ворковала Хозяйка, — он тебе ничуть не помешает, он будет невидимым и неслышимым… — Но вонючим, — не сдавался Хозяин.
— Нет-нет, — хватала его за рукав Хозяйка, — сейчас коты не такие…они не пахнут!
Их опрыскивают!';

preg_match_all('~[А-Я](.*?)[\.\!\?]~s', $s, $m);
var_dump($m[0]);

резалт: Код:
array(6) {
  [0]=>
  string(74) "Конрад Лоренц Вместо вступления: Обыкновенная история Вы завели себе кота?"
  [1]=>
  string(42) "Вы долго выбирали, держали домашний совет."
  [2]=>
  string(52) "Нет, — говорил Хозяин, — кот в доме, это излишество."
  [3]=>
  string(126) "Милый, — ворковала Хозяйка, — он тебе ничуть не помешает, он будет невидимым и неслышимым… — Но вонючим, — не сдавался Хозяин."
  [4]=>
  string(78) "Нет-нет, — хватала его за рукав Хозяйка, — сейчас коты не такие…они не пахнут!"
  [5]=>
  string(15) "Их опрыскивают!"
}
никаких дефисов. что-то ты не то делаешь...
цитата
22/04/14 в 09:37
 Reminder
Проблема была из за того что файл с текстом имел кодировку windows-1251, а скрипт UTF-8, после преобразования кодировки $output = iconv('windows-1251', 'UTF-8', $output);
регулярка отработала правильно icon_wink.gif
цитата
22/04/14 в 09:48
 shlemkin
ну, ты на всякий случай экранируй символы .!?
я может чего забыл, но [.!?] - точка - любой символ. знак вопроса после ! - ноль или более воскл... то есть, правильнее будет [\.\!\?] - оно может и работает, но на всякий случай лучше экранировать... (да-да, тут в квадратных кавычках мы задаем набор символов, но это потом может стать причиной непоняток и багов...)
удачи!

всем мир!


Эта страница в полной версии