答案 0 :(得分:1)
<强>输入:强>
127.0.0.1 user-identifier frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
<强>正则表达式:强>
(\S+)\s+(\S+)\s+(\S+)\s+(\[.*?\])\s+(".*?")\s+(\S+)\s+(\S+)
捕获组的编号如下图所示。
<强>故障:强>
Group Regex Match
#1 IP (\S+) 127.0.0.1
#2 Identity (\S+) user-identifier
#3 Username (\S+) frank
#4 Time (\[.*?\]) [10/Oct/2000:13:55:36 -0700]
#5 Request (".*?") "GET /apache_pb.gif HTTP/1.0"
#6 Status (\S+) 200
#7 Size (\S+) 2326
each separated by a \s+
答案 1 :(得分:1)
我会先得到时间并先请求,然后这只是一个简单的分割:
a = '127.0.0.1 user-identifier frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326'
time = a.slice!(/\[.*?\]/)
request = a.slice!(/".*"/)
ip, identity, username, status, size = a.split
答案 2 :(得分:0)
我也提出了我自己的正则表达式,它也分解了动词,uri和HTTP版本。
^([\d\.]*)\s([\w|-]*)\s([\w|-]*)\s\[(.*)\]\s\"([\w]*)\s(.*)\s(.*)\"\s([\d]*)\s([\d]*)$