当前位置:  编程技术>其它

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

    来源: 互联网  发布时间:2014-10-16

    本文导语:  先说一下这个可疑的ip,58.63.144.170,据说是一个弱智的蜘蛛,上帝保佑它下地狱。 看过apache日志的朋友应该知道,apache的访问日志的每一行是以访问者的ip开始的。因为日志比较大,所以我是用ultraedit来看的。用ultraedit的时候需...

先说一下这个可疑的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'开头的行,大功告成!等等,剩下的空行太难看,让我们把它们干掉,查找:^[rn]*$,替换处为空,执行全部替换,世界终于清静了...

其实本文中用的正则都是很基本的东西,虽然最终没能写出删除包含指定字符串的行的正则,但在迂回中最终也是现实了想要的功能,而且看上去也更清晰一些。有时候退一步未必不是一个更好的选择。

    
 
 

您可能感兴趣的文章:

  • 正则表达式 表示 非指定字符串开头的正则
  • 正则表达式问题,使用正则表达式找出指定字符串并替换?
  • php 正则 不包含某字符串的正则表达式
  • 100分。关于字符串的正则表达式。
  • 计算带正则表达式的字符串长度
  • shell 对字符串进行正则操作
  • 怎么用正则表达是表示允许为空的字符串?
  • shell脚本中判断字符串匹配正则式的问题
  • 用正则表达式怎么匹配最后一个字符串?
  • 用Java正则去掉字符串中重复出现的字符
  • 利用正则快速找出两个字符串的不同字符
  • javascript利用正则快速找出两个字符串的不同字符
  • C#匹配中文字符串的4种正则表达式分享
  • JS正则表达式获取字符串中特定字符的方法
  • DW 查找某字符串前的所有字符的正则表达式
  • c#转义字符串中的所有正则特殊字符方法示例
  • 正则替换字符串功能 原创
  • 使用正则表达式匹配[***]样式的字符串
  • JS正则表达式提取字符串中所有汉字的脚本
  • 用正则表达式判断字符串是汉字还是拼音的js函数代码
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • 正则匹配后面非指定字符的正则 原创
  • Python 匹配任意字符(包括换行符)的正则表达式写法
  • js正则判断非法字符限制输入
  • 让URL只允许一些字符的正则表达式
  • 简单的用js实现过滤多余字符的正则表达式
  • 正则表达式匹配任意字符(包括换行符)的写法
  • php正则表达式转义字符的例子
  • 正则表达式提取图片路径 并过滤掉指定字符的写法
  • 正则表达式其实就是一个特殊的字符串
  • 正则表达式中的懒惰型元字符“*?”在GVIM中的用法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Perl 正则表达式之角色化记忆
  • c#正则过滤图片标签 asp.net正则过滤的例子
  • Linux c++ boost库正则表达式用法
  • java使用正则表达校验手机号码示例(手机号码正则)
  • Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法
  • JS 正则表达式的相关方法(正则学习笔记1)
  • js正则表达式之RegExp对象之compile方法 编译正则表达式
  • PHP html标签正则替换并可自定义正则规则
  • jQuery中的正则表达式分析 正则基础
  • 正则表达式概述 什么是正则表达式 .
  • 常用正则表达式及评注-学习正则必备
  • python正则表达式去掉数字中的逗号(python正则匹配逗号)
  • 正则表达式口诀_学习正则的朋友值得一看
  • Javascript里的两种使用正则的方法
  • 利用正则快速找出两个字符串的不同字符 iis7站长之家
  • (菜鸟飞飞)问个正则表达式的问题
  • 哪些命令可以使用正则表达式
  • 向大家推荐一个收集整理正则表达式的网站
  • 常用正则 常用的C#正则表达式
  • 大虾,请问谁有正则表达式的资料?谢谢!
  • 寻求正则表达试


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3