首页前端开发其他前端知识用正则删除不包含某个字符串的行的代码

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

时间2024-02-01 15:09:03发布访客分类其他前端知识浏览801
导读:收集整理的这篇文章主要介绍了用正则删除不包含某个字符串的行的代码,觉得挺不错的,现在分享给大家,也给大家做个参考。 先说一下这个可疑的ip,58.63.144.170,据说是一个弱智的蜘...
收集整理的这篇文章主要介绍了用正则删除不包含某个字符串的行的代码,觉得挺不错的,现在分享给大家,也给大家做个参考。 先说一下这个可疑的ip,58.63.144.170,据说是一个弱智的蜘蛛,上帝保佑它下地狱。

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

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

先给包含指定ip的行做个标志,这里要用到ut的替换功能。要查找的行:^(58.63.144.170)(.*)。因为日志的每一行都是以数字开始的,所以我选择‘%'做为标志的特殊符号,要替换成的正则为:%$1$2。全部替换以后,包含指定ip的行就变成了这个样子:%58.63.144.170……。接下来,我们再把行首不是‘%'的行删掉,查找:^[^%].*,替换处为空。执行全部替换,日志中只剩下了以‘58.63.144.170'开头的行,大功告成!等等,剩下的空行太难看,让我们把它们干掉,查找:^[\r\n]*$,替换处为空,执行全部替换,世界终于清静了...

其实本文中用的正则都是很基本的东西,虽然最终没能写出删除包含指定字符串的行的正则,但在迂回中最终也是现实了想要的功能,而且看上去也更清晰一些。有时候退一步未必不是一个更好的选择。 您可能感兴趣的文章:
  • 正则表达式匹配不包含某些字符串的技巧
  • PHP正则提取不包含指定网址的图片地址的例子
  • 用正则表达式表示不包含2950的字符串
  • php 正则 不包含某字符串的正则表达式
  • 正则表达式不包含属性
  • 正则表达式不包含align该怎么写
  • 使用正则表达式找出不包含特定字符串的条目

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

删除正则

若转载请注明出处: 用正则删除不包含某个字符串的行的代码
本文地址: https://pptw.com/jishu/595561.html
php 正则 不包含某字符串的正则表达式 用正则表达式表示不包含2950的字符串

游客 回复需填写必要信息