我是一个新的hivebe。
我的查询:在日志文件中,我们有一个请求字段,如“GET /img/home/search-user-ico.jpg HTTP / 1.1”。有超过10,000条记录是可用。
示例:
“GET /img/home/search-user-ico.jpg HTTP / 1.1”
“GET /JavaScript/jquery-1.4.2.min.js HTTP / 1.1”
“GET / ems / home HTTP / 1.1”
“POST / ir HTTP / 1.1”
“GET /CSS/jquery/themes/base/jquery.ui.button.css HTTP / 1.1”
“GET /CSS/jquery/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png HTTP / 1.1”
“GET /JavaScript/jquery/jquery-ui-1.8.5.custom.min.js HTTP / 1.0”
从这个字段“GET /img/home/search-user-ico.jpg HTTP / 1.1”,我只想要这部分 /img/home/search-user-ico.jpg ,我想把它从GET,POST和HTTP / 1.1分开,所以请帮助我如何使用wiki中提供的字符串函数来分割它。我尝试了wiki中提供的一些语法。但是现在我很无奈。
我试过语法,
从日志文件限制10中选择regexp_extract(request,'a-zA-Za-zA-Z [a-zA-Z]',2);
从日志文件限制10中选择regexp_extract(request,'GET(\ s)([a-zA-Z])',2);
从日志文件限制10中选择regexp_extract(request,'。?(\ s)(。?)(\ s)(。*?)',2);
从日志文件限制10中选择regexp_extract(request,'。(\ s)(。)(\ s)(。*)',2);
由于 -Joe
答案 0 :(得分:1)
我使用了RegexBuddy和您提供的示例,只获得了此正则表达式([\S]*) HTTP
的网址
这假设URL中没有文字空格,编码很好。
将其插入到配置单元查询中应该类似于
select regexp_extract(request, ' (\\S*) HTTP', 1) from logfile;
(请注意,(\\S)
之前有一个空格。这可能相当明显,但只是想对它进行评论以防错过)
我在蜂巢中进行了一些测试并且它正在运行,至少与所提供的样本类似的测试。