跳转到内容

保留匹配内容,删去所有不匹配内容

This is a good day.
Such a nice weather.
Everything is fine.
No nice word here.
Hello world.

上面这段文字,我只想保留包含单词 nice 的行,删去其他行。想要得到的结果如下:

Such a nice weather.
No nice word here.

思考:

匹配包含单词 nice 的行:

.*nice.*

匹配不包含单词 nice 的行(使用 负向先行断言 negative lookahead):

^(?!.*nice.*).*$

精简一下:

^(?!.*nice).*$

在替换时不留下空白行:

^(?!.*nice).*$\n?

其中\n?匹配可能存在的换行符。? 匹配前面一部分 0 次或 1 次。如果不加?,最后一行后如果没有换行符,那么就匹配不上。