python之正則匹配檔案內容
阿新 • • 發佈:2019-02-17
目前大部分針對應用層的防護裝置,尤其是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)