ydh427
ydh427
采纳率0%
2015-11-30 14:00 阅读 3.3k

用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条回答 默认 最新

  • daidaineteasy 晓呆同学 2015-11-30 14:58

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

    点赞 评论 复制链接分享
  • syney120 Phoenixcwx 2017-05-09 08:10

    这行内容由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个匹配组 所有奇数项全为有用的。

    点赞 评论 复制链接分享

相关推荐