[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярное выражения для поиска повторяющихся слов
vestmar
Есть текс из предложений столбиком,
есть предложения в которых одно и тоже слово встречается несколько раз
Например:

Слоны большие животные и много едят травы //(норм предложение)
Такие крупные животные как слоны много едят травы потому что это слоны //(надо удалить)

Эти "слоны" могут гулять по тексту где угодно, и встречаться более двух раз, вот такие предложения мне надо удалить) все!
вроде как очистка тавтологии нужна))

Пытался составить что то вроде такого
^(((\w){1,})(\s){0,1}){1,}слоны\s(((\w){1,})(\s){0,1}){0,}слоны\s{0,}(((\w){1,})(\s){0,1}){0,}$


Да, и искомое слово может быть разным (слоны|жирафы|динозавры) регистро независимые, и не имею склонения... т.е. в моём тексте это существительные без склонений будут.
vestmar
Вот такое составил, вроде пашет, но зачем-то бывает удаляет 2 и 3 подряд идущие строки, хотя отдельно в них условия не работают



$slony=preg_replace('#^(\s?слоны(\s((\w){1,})){0,5}){2,}$\n#i', "", $slony);


Ещё сорри за глупый вопрос, зачем # по краям условия)?
vestmar
Решение, кривое... но работает)

$slony=preg_replace('#\n#', "\n\n", $slony); //развигаю строки
$slony=preg_replace('#^.*слоны(\s(\w+)\.?){0,6}\sслоны(\s(\w+)\.?){0,6}$\n\n#mi', '', $slony); //удаляю тавтослов
Placido
Удаляем строки, содержащие одинаковые слова длиной от трех букв и более:
preg_replace('#^.*(\b\w{3,}\b).*\1.*#i', '', $text);

Если нужно убирать и переносы, то добавить, например, (\v+)? в конец регулярки.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.