Регулярные выражения: выбрать предложения, в которых есть искомое слово

  • Автор темы Автор темы nikita
  • Дата начала Дата начала

nikita

Новичок
Регулярные выражения: выбрать предложения, в которых есть искомое слово

Собственно как сделать...
Составил выражения для того, чтобы текст разбивался на предложения:
PHP:
preg_match_all( '/[A-Z].*?[.!?](?=\s|$)/s', $text, $array );
Куда или как вставить "слово, которое я ищу", чтобы в элементах массива оказалось по одному предложению с этим словом?
 
Шедеврально)) Особенно порадовало [.!?].
PHP:
$string = 'The quick brown fox jumps over the lazy dog. PHP is the website scripting language of choice.';
$word = 'php';
preg_match_all('~(?<=[\.!?]|\A)[^\.!?]+?'.preg_quote($word,'~').'[^\.!?]+?(?:[\.!?]|\z)~i',$string,$m);
var_dump($m);
/*
array(1) {
  [0]=>
  array(1) {
    [0]=>
    string(49) " PHP is the website scripting language of choice."
  }
}
*/
Это ^^ вариант в лоб.
А я бы сделал
PHP:
$string = 'The quick brown fox jumps over the lazy dog. PHP is the website scripting language of choice.';
$word = 'php';
$m = preg_grep('~'.preg_quote($word,'~').'~i',preg_split('~[\.!?]~',$string));
var_dump($m);
/*
array(1) {
  [1]=>
  string(48) " PHP is the website scripting language of choice"
}
*/
Студент пупкин ответ закончил.
 
Гравицапа
Начало и конец строки.
Malcolm_Reed
Граница слова - \b.
 
Сверху