用正则删除不包含某个字符串的行的代码

2025-03-12 23:59:21
推荐回答(1个)
回答1:

先说一下这个可疑的ip,58.63.144.170,据说是一个弱智的蜘蛛,上帝保佑它下地狱。

看过apache日志的朋友应该知道,apache的访问日志的每一行是以访问者的ip开始的。因为日志比较大,所以我是用ultraedit来看的。用ultraedit的时候需要注意,它的正则一共有两种,一种是符合perl规范的,而默认的是ut自带的一种,写法比较特殊。本文中用到的正则表达式都是perl兼容的,ut中这个选项可以在“高级->配置->搜索->正则表达式引擎”中进行修改。

经过一番思索,发现自己掌握的正则表达式中好象没有能直接删除“不包含”一个指定串的用法。思前想后,先写一个包含指定串的再说吧:^(58.63.144.170).*$,测试一下,可以把包含指定ip的行找出来,接下来要做的就是怎么把这些行保留下来而删除另外的行。在尝试了N次以后,我终于放弃了直接删除不包含这个ip的行的想法。怎么办呢?退一步海阔天空!既然不能直接删除,那就迂回一下吧。虽然不能直接删除不包含指定串的行,但删除不包含指定字符的正则我还是会写的:)http://www.33dir.com/news/2/2061.html