正则表达式,用于删除记事本++中具有相同ID的行

时间:2019-05-14 22:22:52

标签: regex notepad++

我正在尝试删除Notepad++中具有相同ID的行。我有一个.txt文件,该文件具有以下具有相同ID的结构

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

我想像这样一开始只保留每个id的第一行

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

我尝试使用此正则表达式^(.*?)$\s+?^(?=.*^\1$),但它只给我完全相同的行,我只需要每个id的第一行。

1 个答案:

答案 0 :(得分:2)

这应该有效:

匹配:

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

并替换为:

\1

我们匹配组2中的行ID,并捕获组1中的第一行。然后,我们继续匹配以相同ID开头的后续行(以反向引用\2开头的行)。然后,我们替换为第一行的组1。请注意,这是假设您的ID列在递增。

实时示例:https://regex101.com/r/9KCuMn/1