Удаление строк, которые стоят после друг друга - PullRequest
0 голосов
/ 27 августа 2018

В настоящее время у меня есть список URL-адресов и я хочу подсчитать, сколько раз определенные URL-адреса встречаются в файле. Но перед этим я хочу удалить все URL-адреса, которые стоят друг за другом, без прерывания другой строкой, которая не совпадает, НО позволять одному URL-адресу 1 оставаться. Я думал, что это может быть с регулярным выражением.

Например, это происходит в файле результатов.

www.website1.com
www.website2.com
www.website3.com
www.website3.com !
www.website3.com !
www.website3.com !
www.website1.com
www.website3.com
www.website2.com

Конечные результаты должны выглядеть следующим образом:

www.website1.com
www.website2.com
www.website3.com
www.website1.com
www.website3.com
www.website2.com

Я хочу удалить 3 из 4 первых результатов URL-адреса "website3" (я поставил позади них! это.

1 Ответ

0 голосов
/ 27 августа 2018

Если вы хотите избежать добавления дополнительных ! для выделения URL-адресов, которые вы хотите удалить, вы можете использовать это для удаления «повторяющихся рядом друг с другом»

^(.*)(?:\n(?!\1$)|\z)

Разъяснения:

^    # begin of line
(.*) # any character but new line; store on first capturin group ()
(?:  # group of options (separater by '|')
     # option 1) new line not followed by the previous match on capturing group 1
    \n(?!\1$)
     # option 2) end of string
  | \z
)

Демо

...