删除重复的行而不进行排序

删除重复的行而不进行排序

是否可以删除 Notepad++ 中的重复行,只留下一行?

如果我有这些行:
1
5
3
9


1
4
3

我希望它是:
1
5
3
9


4

我希望它保留第一个重复的行,并删除所有其他重复的行......而不进行排序。

有人能帮帮我吗?

此致

答案1

要求是一个正则表达式:

  • 不对行进行排序(取消 TextFX 资格)。
  • 保留第一次出现的情况删除后者重复。

我也遇到了这个问题。到目前为止,我得到了以下信息:^(.*?)$\s+?^(?=.*^\1$)

  • 仅当您启用该选项时它才在 notepad++ 中有效"." matches newline
  • 删除第一个发生和保持后者重复。

我曾经有一个很棒的(但很慢)正则表达式,它兼容 javascript、notepad++ 和 VisualStudio 查找和替换,但我把它弄丢了。如果我能弄清楚或再次找到它,我会更新这个。

答案2

  • Ctrl+H
  • 找什么:^(.+)(\R)([\s\S]+?)\1\R?
  • 用。。。来代替:$1$2$3
  • 检查环绕
  • 检查正则表达式
  • 取消选中. matches newline
  • Replace all

解释:

^               # begining of line
  (             # start group 1
    .+          # 1 or more any character but newline
  )             # end group 1
  (\R)          # group 2, any kind of linebreak
  (             # start group 3
    [\s\S]+?    # 1 or more any character, not greedy
  )             # end group 3
  \1            # same content as group 1
  \R?           # optional linebreak, to take care of last line, may be without linebreak.

替代品:

$1          # content of group 1
$2          # content of group 2
$3          # content of group 3

给定示例的结果:

1
5
3
9


4

注意:您必须Replace all根据需要多次点击,它不会一次性删除所有重复项。

答案3

这可能比其他一些答案更快:

  • 寻找:  (^.*$\r\n)\1*
  • 代替:$1
  • 选择“正则表达式”单选按钮

相关内容