Regex: выбрать все повторяющиеся строки - PullRequest
1 голос
/ 07 июня 2019

Хорошо, я играл с этим некоторое время и приблизился, но все еще не могу справиться с этим.

Я хочу перейти от:

a
a
b
a
c
a

до (в блокноте ++):

b
c

Я могу сделать:

a
b
c

Вот мои лучшие неудачи до сих пор, но вы поняли:

^(((.+)(\r?\n))(?:(?!\1).*\s*)?)((?:(?!\2).*\s*)?(\2))+
^((.+)(\r?\n))((?:(?!\1).*\s*)?(\1))+

От Regexr, я просто хочу «тестовую линию». Regexr

Новая ближайшая попытка:

^((.+)(\r?\n))(?=(.+)(\r?\n))?(\1)+

enter image description here

Ответы [ 2 ]

2 голосов
/ 07 июня 2019

Для тех, кто не прочитал комментарии, идея состоит в том, чтобы использовать NP ++ для фильтрации черного списка IP-адресов, поместив его в полный список IP-адресов и полностью удалив повторяющиеся строки, которые встречаются где угодно.

Этоможет быть сделано с использованием внешнего вида переменной длины , который не поддерживается в Notepad ++.

В качестве обходного пути, а также более эффективным:

  1. Сортировка строкс помощью плагина TextFX Character (выбрать все).
  2. Используйте простой шаблон, например ^(.+)\R(?:\1(?:\R|$))+, для удаления последовательных повторяющихся строк.
0 голосов
/ 07 июня 2019

Эта задача не должна выполняться с помощью регулярных выражений IMHO. Задачи такого рода должны быть перенесены на любые языки программирования. Я публикую одно из решений gazillion, но на основе оболочки:

sort file.txt | uniq -d

эта команда собирается отсортировать файл и отобразить список повторяющихся значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...