How to delete all lines matching or not matching a regex in Notepad++?
In Vim, I'd do the following to delete all matching lines:
:g/regex/d
And to delete all non matching lines:
:!g/regex/d
I'm looking for these commands' equivalent in Notepad++.
As also explained in "Notepad++ - delete all lines with certain text", I usually go for the approach of blanking the matching lines and deleting the blank lines afterwards. Is there a simpler way?
As per this answer, versions of Notepad++ >= 6.0 support matching line breaks in regex, thus allowing to delete whole lines directly without creating blank lines first. The following pattern should remove all lines containing "foobar" when replaced with an empty string:
^.*foobar.*\r\n
Now, as discussed in "Regular expression to match a line that doesn't contain a word?", negating regular expressions isn't exactly straightforward. Deleting lines in Notepad++ which do not contain "foobar" would require the following pattern:
^((?!foobar).)*\r\n
Because that's a quite complicated command to type just for removing lines which don't contain a word (or possibly more complex expression), I wonder if there is an easier solution.