对于给定的输入例如:解析码头日志记录
70.80.110.200 - - [12/Apr/2011:05:47:34 +0000] "GET /notify/click?r=http://www.xxxxxx.com/hello_world&rt=1302587231462&iid=00000 HTTP/1.1" 302 0 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; FunWebProducts; HotbarSearchToolbar 1.1; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; AskTbFWV5/5.11.3.15590)" 4 4
我想定义以下解析逻辑(可能正则表达式)
- 提取IP(3位数字,圆点)* 4 => 70.80.110.200
- 提取物的时间=> 12 /月/ 2011
- 提取时间=> 5点47分34秒
- 提取URI(以\开头,以\“结尾)。 => /notify/click?r=http://www.xxxxxx.com/hello_world & RT = 1302587231462 & IID = 00000
能否请您提供这样的代码示例? – 2011-04-20 11:40:48
对不起,但没有 - 使用谷歌/书来找到如何在Java中使用正则表达式。 – hsz 2011-04-20 11:41:54
不是100%正确的 - 固定版本:r = /^([0-9.]*).*?\[(\d+\/\w+\/\d+):((dd::d+:\d+) (原始版本只匹配一个数字/句号而不是整个组,并且它不会偏离方括号) – 2011-04-20 11:50:37