Ответы:
Отсортируйте строки в алфавитном порядке, если их еще нет, и выполните следующие действия:
(на основе этого связанного вопроса: как найти и удалить повторяющиеся строки из файла с помощью регулярных выражений? )
Control+F
Переключить "Режим замены"
Переключите «Использовать регулярное выражение» (значок с .*символом)
В поле поиска введите^(.*)(\n\1)+$
В поле " заменить на " введите$1
В этом случае либо прибегните к решению вне VS Code (см. Здесь ), либо - если ваш документ не очень большой и вы не против спамить кнопку «Заменить все» - выполните предыдущие шаги, но в шагах 4 и 5, введите эти:
(на основе Удалить определенные повторяющиеся строки без сортировки )
Внимание: блоки для файлов со слишком большим количеством строк (1000+); может вызвать сбой VS Code; в некоторых случаях могут появиться пустые строки.
поиск :((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?
заменить на :$1
а затем нажмите кнопку «Заменить все» столько раз, сколько будет повторений .
Вы поймете, что этого достаточно, когда количество строк перестанет уменьшаться, когда вы нажмете кнопку. Перейдите к последней строке документа, чтобы следить за ней.
^(.*)(\n\1)+$. После удаления повторяющихся строк я хочу просмотреть все строки с повторяющимся первым столбцом в csv и хочу изменить регулярное выражение.
\r?бит из другого ответа на самом деле не нужен.
Вот очень интересное расширение: Transformer
Особенности:
Для удаления повторяющихся строк:
Удаляет повторяющиеся строки из документа
Работает с выбором или текущим блоком, если нет выбора
Я не особо много с ней играл, кроме команды «Уникальные строки», но, похоже, она сделана неплохо (включая попытку записи макросов!).
Чтобы добавить в ответ @ Marc.2377.
Если порядок важен, и вам все равно, что вы просто сохраняете последнюю из повторяющихся строк, просто найдите следующее регулярное выражение, если вы хотите удалить только повторяющиеся непустые строки
^(.+\n)(?=(?:.*\n)*?\1)
Если вы также хотите удалить повторяющиеся пустые строки, используйте *вместо+
^(.*\n)(?=(?:.*\n)*?\1)
и ничего не заменить.
Это займет строку и попытается найти еще несколько (возможно, 0) строк, за которыми следует точно такая же строка. Он удалит взятую строку.
Это всего лишь одноразовое регулярное выражение. Не нужно спамить кнопку замены.
^(.+\n)(?=(?:.*\n)*?\1)вместо этого, потому что ваше регулярное выражение удалило пустую строку там, где этого не ожидалось. Все равно проголосовали за.
xxx(?=…)является предварительным совпадением. Таким образом, он следит за тем, чтобы все, что следует за «xxx», соответствовало «…», но не продвигает поиск. (?:…)это просто скобка, которая не учитывается при подсчете скобок. .*\nшаблон для (возможно пустой) строки. *означает, что строк может быть как несколько, так и ни одной. Знак ?после звездочки ( *) означает, что нам нужно как можно меньше строк. Как \1следует из этого выражения, мы ищем все строки, которые не совпадают, \1до тех пор, пока не найдем совпадение строк \1. Надеюсь, это проясняет.
У меня была такая же проблема, и я нашел пакет Visual Studio Code «Строки сортировки». Для получения подробной информации см. Рынок Visual Studio Code (например, строки сортировки ).
В этом пакете есть опция «Строки сортировки (уникальные)», которые сделали это за меня. Позаботьтесь о любых пробелах в начале / конце строк. Они влияют на то, считаются ли линии уникальными или нет.
Установите расширение DupChecker , нажмите F1и введите «Проверить дубликаты».
Он проверит наличие дубликатов и спросит, хотите ли вы их удалить.
Попробуйте найти и заменить регулярным выражением .
Найти:
^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$
Заменить:
$1$2
В первую группу можно внести некоторую дисперсию.
На самом деле не в Visual Studio Code, но если это работает, то работает.
Это не лучший ответ, поскольку вы указали код Visual Studio, но, как я уже сказал: если он работает, он работает :)
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?сделал мой сбой vscode .... Я нашел в одном файле 229 строк. :(