简体   繁体   中英

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

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.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM