Regex 用于删除记事本中具有相同id的行的正则表达式++;
我正在尝试删除Regex 用于删除记事本中具有相同id的行的正则表达式++;,regex,notepad++,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
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的第一行。这应该可以:
匹配:
^((\d+).*)(\r?\n\2.*)+
并替换为:
\1
我们匹配组2中的行ID,并捕获组1中的第一行。然后,我们继续匹配以相同ID开头的后续行(以反向引用开头的行)。然后我们替换为第1组,这是第一行。请注意,这假设您的ID列是升序的
实例:更好的版本应该是这个。无需将反向引用定义为替换字符串。