从文本中删除相似的字符串?

从文本中删除相似的字符串?

我在用着记事本++sed在 Windows 上。
我有一个文件文本2000+行但有时我有以下行:

http://www.shragle.com/files/9baa908b/Bvdub-The_First_Day-%2528HN031%2529-2012.rar
http://www.shragle.com/files/9baa908b/Bvdu...1%2529-2012.rar
http://rapidshare.com/files/152133956/2005_-_Candlemass.part1.rar
http://rapidshare.com/files/152133956/2005...emass.part1.rar
http://www.filefactory.com/file/a181d18/n/...nimal_2010_.rar
http://rapidshare.com/files/152136400/2005_-_Candlemass.part2.rar
http://rapidshare.com/files/152136400/2005...emass.part2.rar
http://www.shragle.com/files/3e0f3488/Cesa...testHits2CD.rar

我怎样才能删除这一行?

http://www.shragle.com/files/9baa908b/Bvdu...1%2529-2012.rar
http://rapidshare.com/files/152133956/2005...emass.part1.rar
http://rapidshare.com/files/152136400/2005...emass.part2.rar

我不想删除此行:

http://www.shragle.com/files/3e0f3488/Cesa...testHits2CD.rar
http://www.filefactory.com/file/a181d18/n/...nimal_2010_.rar

因为这些行对我来说是唯一且有效的,所以我只想删除相似的行

类似的行,我想删除...线

http://rapidshare.com/files/152133956/2005_-_Candlemass.part1.rar
http://rapidshare.com/files/152133956/2005...emass.part1.rar

唯一的行,因为在我的文本文件中只出现一次:

http://www.filefactory.com/file/a181d18/n/...nimal_2010_.rar

答案1

如果某行的前 40 个字符与前一行的前 40 个字符相同,则以下命令将删除该行:

Find what:         ((?<=\n)|^)([^\n]{40})([^\n]*\n)(.*\n)?\2[^\n]*($|\n)
Replace with:      \2\3\4
Search Mode:       Regular expression
. matches newline: checked

您可能需要单击Replace All多次。

怎么运行的

  • ((?<=\n)|^)检查正则表达式的其余部分是否位于换行符或文件开头之前。

  • ([^\n]{40})([^\n]*\n)匹配一行的前 40 个字符(存储在 中\2)以及其余部分(存储在 中\3)。

  • (.*\n)?是任意数量的行(存储在中\4)。

  • \2[^\n]*是以相同的 40 个字符开头的一行。

  • ($|\n)检查正则表达式的其余部分是否后面跟着换行符或文件末尾。

如果遇到这种模式,则会出现类似于的行\2\3

通过用 替换全部\2\3\4,类似的行将被删除。

相关内容