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

◇◆丶佛笑我妖孽 提交于 2020-01-01 08:52:52

问题


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.


回答1:


In the Find dialog, on the Mark tab, you can bookmark lines that match... Then on the menu Search > Bookmark > Remove Unmarked Lines or Remove Bookmarked lines



来源:https://stackoverflow.com/questions/34458344/delete-all-lines-not-matching-a-regex-using-notepad

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!