RegEx для удаления строк, имеющих одинаковый идентификатор в Notepad ++ - PullRequest
4 голосов
/ 15 мая 2019

Я пытаюсь удалить строки с одинаковым идентификатором в Notepad++. У меня есть файл .txt, который имеет следующую структуру с тем же идентификатором

1       33.854088   21.766714   abcdeffgffghjkkgfdfghjjh
1       33.854088   21.766714   ghfhsjiwassjss
2       32.856728   23.758888   asdfgdgff
3       37.85834    23.7711     asdfgghgghhg
3       37.85834    23.7711     babanxucndk

Я хочу сохранить только первыйстрока каждого идентификатора в начале, как этот

1       33.854088   21.766714   abcdeffgffghjkkgfdfghjjh
2       32.856728   23.758888   asdfgdgff
3       37.85834    23.7711     asdfgghgghhg

Я пытался использовать это регулярное выражение ^(.*?)$\s+?^(?=.*^\1$), но он дает мне только полностью идентичные строки, и мне просто нужна первая строка каждого идентификатора.

1 Ответ

2 голосов
/ 15 мая 2019

Это должно работать:

Совпадение:

^((\d+).*)(\r?\n\2.*)+

И заменить на:

\1

Мы сопоставляем идентификатор строки в группе 2 и получаем первыйстрока в группе 1. Затем мы продолжаем сопоставлять последующие строки, начинающиеся с того же идентификатора (строки, начинающиеся с нашей обратной ссылки \2).Затем мы заменим на группу 1, которая является первой строкой.Обратите внимание, что при этом предполагается, что столбец идентификатора возрастает.

Пример в реальном времени: https://regex101.com/r/9KCuMn/1

...