求一个正则写法, 匹配 (不包含某个词) 一整行

2016-01-16 14:11:22 +08:00
 miao
举例说明,有如下片段文字, 我想用正则 删除 不带 keykeykey 的所有行

xxx xxx a xxx xxx
xxx xxx b xxx xxx
xxx xxx c xxx xxx
xxx xxx keykeykey xxx xxx
xxx xxx d xxx xxx
xxx xxx e xxx xxx
xxx xxx keykeykey yyy yyy
xxx xxx f xxx xxx
xxx xxx gg xxx xxx

处理后得到结果
xxx xxx keykeykey xxx xxx
xxx xxx keykeykey yyy yyy
1928 次点击
所在节点    问与答
9 条回复
hienchu
2016-01-16 14:22:51 +08:00
imn1
2016-01-16 14:23:06 +08:00
你去锁搜一下“正则 排除”就能找到了
一般是
(?!(?:关键字 1|关键字 2|关键字 3)).*?

(?!(?:关键字))[\s\S]*?
这种写法,然后,前后扩充为一个完整的正则

你这个试试 ^.*(?!(?:关键字)).*?$
bin456789
2016-01-16 14:25:51 +08:00
lhbc
2016-01-16 14:49:42 +08:00
grep keykeykey file.txt > new.txt
Kisesy
2016-01-16 14:55:15 +08:00
你为啥不直接说,要保留带 keykeykey 的文本
qqmishi
2016-01-16 15:15:13 +08:00
换个思路简单的多,,,把带 keykeykey 的行输出到新文件,源文件删了就好了
miao
2016-01-16 16:05:38 +08:00
@qqmishi 是的。已经解决


@Kisesy 是的。 已经解决

按 4 楼方法解决了
yue9944882
2016-01-16 20:03:52 +08:00
Perl 里这样就可以
while($line!~s//keykeykey/){;}
louk78
2016-01-17 15:03:24 +08:00
你为啥不直接说,要保留带 keykeykey 的文本

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/251174

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX