[英]Extract contents from a line
我试图用短语表达我的访问日志文件,为此,我只是简单地逐行读取访问日志文件,并从每行中提取有用的信息,最后将它们添加到数据库中。
例如,一条线看起来像这样。
124.99.152.202 - naveen [22/Nov/2013:10:41:17 +1300] "GET /p/V4ZkA5d074CTy_vbFa7nLw,1385070078/IneedThisInteger/12.txt HTTP/1.1" "200" "3" "-" "Mozilla/5.0" "-"
我只知道如何提取IP地址。(使用此方法 )
我要提取
此请求值GET /p/V4ZkA5d074CTy_vbFa7nLw,1385070078,IneedThisInteger/12.txt HTTP/1.1
上面部分的整数值IneedThisInteger
这个状态的一部分200
该字节的第3
有时要求更改URL是最后一部分 ,
"GET /p/V4ZkA5d074CTy_vbFa7nLw,1385070078,IneedThisInteger/FOLDER/12.txt HTTP/1.1"
"GET /p/V4ZkA5d074CTy_vbFa7nLw,1385070078,IneedThisInteger/FOLDER/ANOTHER FOLDER/12.txt HTTP/1.1"
"GET /p/V4ZkA5d074CTy_vbFa7nLw,1385070078,IneedThisInteger/FOLDER/ANOTHER FOLDER/HEREIS-ANOTHER-FOLDER-AND-SO-ON/12.txt HTTP/1.1"
因此,我确实需要一种稳定的方法来从每一行中获取这些值。
这应该可以解决问题:
^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*?"(.*?/p/.*?,\d+,(\d+).*?)" "(\d+)" "(\d+)".*$
这是一个小提琴来演示: http : //www.rexfiddle.net/3sDwWut
为了测试目的,我用实际数字替换了您的“我需要此整数”,并且还对“字节”和IP地址进行了一些随机化处理。 这些是捕获,按顺序:
GET xxx HTTP/1.1
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.