Ответы:
Отсортируйте строки в алфавитном порядке, если их еще нет, и выполните следующие действия:
(на основе этого связанного вопроса: как найти и удалить повторяющиеся строки из файла с помощью регулярных выражений? )
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 строк. :(