Удалить повторо слов

Тема в разделе "Регулярные выражения", создана пользователем reeemmmy, 27 янв 2016.

Модераторы: xpert13
  1. reeemmmy

    reeemmmy Постоялец

    Регистр.:
    8 авг 2009
    Сообщения:
    64
    Симпатии:
    20
    Есть запросы в которых некоторые слова встречаются два и более раз
    Как бы регуляркой удалить эти повторы?

    спримеры

    скачать драйвер самсунг дарайвер самсунг
    скачать мп3 скачать
    скачать мп3 скачать мп3
     
  2. Hozey

    Hozey Постоялец

    Регистр.:
    4 авг 2008
    Сообщения:
    84
    Симпатии:
    38
    Нагуглил. Я работал только с простыми регулярками... Код протестил у себя на хосте. Работает.

    Код:
    <?php
    $str = 'скачать мп3 скачать мп3 ';
    $str = preg_replace('/(\b[\pL0-9]++\b)(?=.*?\1)/siu', '', $str);
    echo $str;
    ?>
    на выходе:
    Код:
    скачать мп3 
    С "скачать драйвер самсунг дарайвер самсунг" не прокатило, по понятной причине. Убрало только "самсунг"
     
  3. reeemmmy

    reeemmmy Постоялец

    Регистр.:
    8 авг 2009
    Сообщения:
    64
    Симпатии:
    20
    О! Хотя бы есть представление, что это в принципе возможно
    Теперь бы решить полностью ) если асы в регулярках есть, очень выручите, базу почистить нужно
     
  4. mSnus

    mSnus Создатель

    Регистр.:
    4 дек 2015
    Сообщения:
    36
    Симпатии:
    10
    я бы разбил в массив по пробелу (explode) и убрал все повторяющиеся ключи (Перейти по ссылке), потом склеил обратно через пробел (implode)
    так проще, быстрее и надежнее.

    например, в вашем regexp-e /(\b[\pL0-9]++\b)(?=.*?\1)/siu вы использовали маленькое u - это Unicode,
    а должны были, по идее, использовать большое U - Ungreedy, чтобы .* отрабатывала до первого совпадения, а не до последнего.
    и так далее, мелкие ошибки там отлавливать можно долго.
     
  5. Вадим Дудченко

    Вадим Дудченко Создатель Нарушитель

    Регистр.:
    22 авг 2013
    Сообщения:
    21
    Симпатии:
    0
    прекрасно удалять (заменять) текст по маске в программе BRED3.0 Ссылку писать не буду. Не знаю как ставиться админ к этому. Но гугл точно найдёт.
     
  6. Seegr

    Seegr Писатель

    Регистр.:
    23 июн 2016
    Сообщения:
    2
    Симпатии:
    0
    Есть очень мощный универсальный софт для обработки текстов - поиск и замена на скорости сравнимой с работой HDD - гигабайты данных обрабатывает буквально за минуты - называется textpipe,
    найдете самизнаетегде
    Если будет нужна помощь при работе в нем - обращайтесь в личку.