Ruby Regex用于通用日志格式
嘿伙计们,我正在寻找一个正则表达式,它将“解析” Common Log Format标准的一行,并从中给出7个变量:
- IP
- 身分
- 用户名
- 时间
- 请求
- 状态
- 对象的大小。
有人已经实现了这个正则表达式吗?
我会先得到时间并先请求,然后这只是一个简单的拆分:
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
输入:
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+
我也想出了我自己的正则表达式,它也分解了动词,uri和HTTP版本。
^([\d\.]*)\s([\w|-]*)\s([\w|-]*)\s\[(.*)\]\s\"([\w]*)\s(.*)\s(.*)\"\s([\d]*)\s([\d]*)$
- 如何将Nokogiri Document对象转换为JSON
- Ruby:两个范围之间的交集
- 为什么Rails演示应用程序提供“未初始化的常量ExecJS :: RubyRacerRuntime :: Context :: V8”?
- Rails rspec undefined方法`receive_message’用于#<RSpec :: ExampleGroups ::
- 第80行的重复键忽略:“name”rvm
- 如何在Rails中使用带有xml的SOAP服务(EU增值税号检查)
- 如何在RSpec中测试信号处理,特别是处理SIGTERM?
- 使用mongomapper在rails app中执行查询
- Ruby不是从mac os x开始的