1. 程式人生 > >python之正則匹配檔案內容

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)