使用 Notepad++ 删除所有(不)匹配正则表达式的行

Delete all lines (not) matching a regex using Notepad++

如何在 Notepad++ 中删除所有匹配或不匹配正则表达式的行?

在 Vim 中,我将执行以下操作以删除所有匹配行:

:g/regex/d

并删除所有不匹配的行:

:!g/regex/d

我正在 Notepad++ 中寻找这些命令的等价物。

正如“Notepad++ - delete all lines with certain text”中所解释的那样,我通常采用消隐匹配行并随后删除空白行的方法。有没有更简单的方法?


根据this answer,Notepad++ >= 6.0 的版本支持在正则表达式中匹配换行符,从而允许直接删除整行而无需先创建空行。当替换为空字符串时,以下模式应删除所有包含 "foobar" 的行:

^.*foobar.*\r\n

现在,正如“Regular expression to match a line that doesn't contain a word?”中所讨论的那样,取反正则表达式并不是那么简单。在 Notepad++ 中删除不包含 "foobar" 的行需要以下模式:

^((?!foobar).)*\r\n

因为仅用于删除不包含单词(或可能更复杂的表达式)的行,键入该命令非常复杂,我想知道是否有更简单的解决方案。

Find 对话框中,在 Mark 选项卡上,您可以为匹配的行添加书签... 然后在菜单 Search > Bookmark > Remove Unmarked LinesRemove Bookmarked lines