[英]Parse apache log file with java regex
我試圖解析一個 apache 日志文件,並且使用以下模式運行正常:
^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3}) (\\d+) \"([^\"]+)\" \"([^\"]+)\"[\\W]+
但是,它中斷了以下日志:
218.30.103.62 - - [17/May/2015:11:05:11 +0000] "GET /robots.txt HTTP/1.1" 200 - "-" "Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)"\
我對正則表達式並沒有真正的經驗,我幾乎在嘗試錯誤和試驗方法,任何幫助將不勝感激。 (我知道 d+ 它不應該在那里,但這幾乎是我所知道的......)
任何想法? 謝謝
你的格式是:
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
(見 這里)
所以你的正則表達式將是:
"^(\\S+) (\\S+) (\\S+) \\[(.+?)\\] \\\"(.+?)\\\" (\\d{3}) (\\S+) \\\"(.+?)\\\" \\\"(.+?)\\\"[\\W]+ $"
匹配組在哪里(我使用 apache 文檔中定義的引用):
[]
) 注意 - 您的正則表達式有點過於復雜,它失敗的原因是因為 %b 並不總是一個數字 - 當請求不返回字節時,它將是-
而不是0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.