Как удалить дубликаты строк регуляркой?

Тема в разделе "Регулярные выражения", создана пользователем cocs, 15 окт 2017.

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

    cocs

    Регистр.:
    5 дек 2009
    Сообщения:
    463
    Симпатии:
    140
    Вобщем есть файл на несколько тысяч строк, большинство этих строк два раза повторяются, и только незначительная их часть встречается единожды. Вот как раз мне и нужно получить эту незначительную часть, убрав все повторяющиеся. Т.е. не только очистить от дублей (таких сервисов множество), а удалить те которые повторяются два раза.
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.220
    Симпатии:
    2.251
    Загони построчно в MySQL и сделай select distinct
     
    cocs нравится это.
  3. dmx

    dmx

    Регистр.:
    22 июн 2011
    Сообщения:
    684
    Симпатии:
    588
    PHP:
    $array = array('1''2''1''3'); // $array = file('file.txt');

    $result array_diff($arrayarray_diff_assoc($arrayarray_unique($array)));
    var_dump($result);
     
    cocs нравится это.
  4. gradar

    gradar Постоялец

    Регистр.:
    15 авг 2015
    Сообщения:
    106
    Симпатии:
    65
    При отсортированном списке в Notepad++
    Найти
    ^(.*\r?\n)(\1)+
    и заменить на пусто
     
    romas_s и cocs нравится это.
  5. cocs

    cocs

    Регистр.:
    5 дек 2009
    Сообщения:
    463
    Симпатии:
    140
    Вот пример, имеем мы такие данные:
    значение один
    значение два
    значение три
    значение четыре
    значение пять
    значение шесть
    значение два
    значение три
    значение пять
    значение шесть

    мне нужно отсеять все ненужное, т.е.: значение два, значение три, значение пять, значение шесть. Так как они повторяются два раза. На выходе мне необходимо получить только:
    значение один
    значение четыре

    Насколько я понял, оператор SQL DISTINCT выдаст мне
    значение один
    значение два
    значение три
    значение четыре
    значение пять
    значение шесть

    А это уже не тот результат который мне нужен...
     
  6. jst1

    jst1 Писатель

    Регистр.:
    5 янв 2017
    Сообщения:
    3
    Симпатии:
    0
    select * from table_name where id_filed not in (select distinct * from table_name)
     
  7. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.220
    Симпатии:
    2.251
    jst1, ты попробуй выполнить хотя бы ))) Выбрать все строки, где значения не попадают в список уникальных строк...
    В лучшем случае у тебя будет пустое множество, в худшем - ошибка, т.к. нельзя делать "NOT IN SELECT *" - нужно указывать конкретный столбец, даже если он один.

    @cocs, сорян, не правильно понял задание...
    И так, запихиваем всё в MySQL, забираем все строки:
    Теперь нам надо узнать сколько у нас есть строк:
    Ок, но нам нужно не общее количество, а количество одинаковых строк, сгруппируем:
    Отлично, мы получили сколько одинаковых строк мы имеем. Добавим условие:
    Получили список строк, которые повторяются ровно 1 раз.

    Если нужно убрать именно те, которые 2 раза, но оставить ... 3, 4, 5 раз:
    Увы, сервера БД под рукой нет, так что решил описать всю логику на случай ошибок в синтаксисе...
    <-------------- добавлено через 933 сек. -------------->
    @funnywheel, ну, наверное, потому что это форум для Web-мастеров по большей части и хостинг с MySQL есть у всех...

    А вот ставить Python на Windows не каждый будет :) Ну а дедиков и ВДСок с linux ни у всех имеется...
     
  8. funnywheel

    funnywheel WordPress developer

    Регистр.:
    6 авг 2010
    Сообщения:
    250
    Симпатии:
    189
    Зачем ради этого вообще париться с мускулем? о_О

    Перейти по ссылке
    <-------------- добавлено через 568 сек. -------------->
    Можно то-же самое сваять на похапэ или JS, просто питон для работы с текстом вроде как поприятнее.
    А выполнить можно хоть в веб-морде repl.it, он у меня норм сейчас прожевал 3к строк на входе.

    Да и на венду поставить питон проще, чем загнать в бд текстовик построчно =)
    скачать экзешник -> далее -> далее -> далее -> ок
     
  9. savvadesogle

    savvadesogle Создатель

    Регистр.:
    19 мар 2014
    Сообщения:
    18
    Симпатии:
    3
    Excel - удалить дубликаты.
    Или разбить файл на строки и создать массив. Это все для Python.
    list = set()
     
  10. romas_s

    romas_s

    Регистр.:
    9 ноя 2012
    Сообщения:
    150
    Симпатии:
    34
    фига се, даже подумать не мог, что в Notepad++ есть такая возможность.
    Нужно будет обязательно протестировать.

    ^(.*\r?\n)(\1)+ - это и есть тот вид в котором нужно вносить регулярку???
    регулярку - вбивать в строку поиска?? и как Notepad++ понимает что ему регулярку подсунули??
    Спрашиваю по тому что нет скобок.