python之正则匹配文件内容

目前大部分针对应用层的防护设备,尤其是WEB应用,主流的防护手段还是基于正则表达式进行匹配过滤。

最近发现自己使用的设备出现很多误报,期望通过匹配日志记录定位问题,手动匹配会是一个很繁琐的过程,所以考虑程序自动化实现。

问题定义:

1、文件A存储了一系列正则表达式,每行一条

2、文件B中存储了所有的日志,每行为一次访问记录,保护请求源IP、客户端浏览器信息、请求url等

要求:输出文件B中的url,该url与文件A中任意一条正则相匹配,并同时输出该正则表达式

以下是代码实现

import re
import sys
import urllib

de=urllib.unquote
url_file=sys.argv[1]
regex_file=sys.argv[2]
print url_file
print regex_file
p_ufile=open(url_file)
p_rfile=open(regex_file)
uline=p_ufile.readline().strip('\n')
rline=p_rfile.readline().strip('\n')
while(uline):
        url=uline.split(" ")[8]
#       print url
        url=de(url)
        while(rline):
#               print rline
#               print url
                if re.search(rline,url):
                        print "**********************************************"
                        print rline
                        print "##########regex#########"
                        print uline
                        print "**********************************************"
                        break
                rline=p_rfile.readline().strip('\n')
#               break
#       print uline
#       break
        p_rfile.close()
        p_rfile=open(regex_file)
        rline=p_rfile.readline().strip('\n')
        uline=p_ufile.readline().strip('\n')

如果正则表达式中使用'(单引号)进行匹配,而在url中出现的确实%27,这种情况下是无法匹配成功的,为了解决这个问题,可以先将url进行解码:

de=urllib.unquote
url=de(url)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值