用java编写正则表达式解析web日志

日志数据:183.60.213.10 - - [31/Jan/2013:00:00:13 +0800] \"GET /mobilenews/showNews.jspx?newsid=23007 HTTP/1.1\" 302 0 \"-\" \"Mozilla/5.0 (compatible; EasouSpider; +http://www.easou.com/search/spider.html)\" \"-\" \"0.000\"
求用java编写正则表达式解析上面的日志的代码!!

2个回答

你需要解析哪部分数据呢,是这其中的全部数据么?
建议上网搜一下正则表达式内容,自己写一写。

ydh427
ydh427 是的,就是这些数据,上网搜过并没有结果,还希望大神们给予帮助
4 年多之前 回复

这行内容由9项构成
1 第一项信息是远程主机的IP地址
2 第二项是空白,用一个"-"占位符替代,这不只是浏览者的登录名字,而是浏览者的 email地址或者其他唯一标识符
3 第三项也是空白。这个位置用于记录浏览者进行身份验证时提供的名字
4 第四项是请求的时间。
5 第五项信息或许是整个日志记录中最有用的信息,它告诉我们服务器收到的是一个什么样的请求。
该项信息的典型格式是"METHOD RESOURCE PROTOCOL",
6 第六项信息是HTTP状态代码。它告诉我们请求是否成功,或者遇到了什么样的错误。大多数时候,这项值是200,
7 第七项表示发送给客户端的总字节数。它告诉我们传输是否被打断
8 第八项记录的是客户在提出请求时所在的目录或URL
9 九项表示客户端的详细信息,这样你就不难理解为什么有些网站能够在页面中显示你的IP、OS、Browser了

正则:
Pattern p3 = Pattern.compile("(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})(\s)(\S+|-)(\s)(\S+|-)(\s\[)([0-9a-zA-Z\+-:/ ]+)(\]\s\")(\S+)(\s)(\S+)(\s)(\S+)(\"\s)(\d+)(\s)(\d+)(\s\")(\S+)(\"\s\")(.+)(\")");
Matcher m3 = p3.matcher("10.1.1.95 - - [18/Mar/2005:12:21:42 +0800] \"GET /stats/awstats.pl?config=e800 HTTP/1.1\" 200 899 \"http://10.1.1.1/pv/\" \"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)\"");
System.out.println(m3.matches());
以上共22个匹配组 所有奇数项全为有用的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐