HIVE regexp_extract URL字符串

时间:2013-08-07 22:13:58

标签: regex hive

您好我正在尝试使用Hive从日志中解析大型URL。

我想从URL中提取一个特定的值(策略= ??),这些值可以连字,但并非总是如此。

我构建了这个示例查询,但它只返回任何内容。

我做错了什么?

select regexp_extract('234=23234&werw=asdf&strategy=retargeting&asdf=fds23', '(strategy=)([-\w*]*)',2) from vt;

所以我期望获得的价值是从这个部分网址字符串重新定位。 234 = 23234&安培; werw = ASDF&安培;策略= 重新定位&安培; ASDF = fds23

非常感谢任何帮助!!!

1 个答案:

答案 0 :(得分:0)

我相信这个正则表达式适合你:

strategy=((\w-?)+)

以下是RegExr链接:http://regexr.com?35sbl。匹配后,组1包含strategy的值。请注意,此正则表达式将匹配值中的任意数量的连字符。如果连字符是第一个字符,它也会失败(但在我看来,前导连字符不会使值'连字')。

据我所知,由于第2组的设置方式,你的方法没有返回任何内容:你有[-\w*],表示“匹配连字符,然后是任意数量的字母数字字符(包括0) )”。您也可以将其重写为[-?\w*]*,其中“匹配或不匹配连字符,然后是任意数量的字母数字字符(包括0)”。但是,这将匹配只是连字符,如本例所示

strategy=-

我想,这不是你想要的东西。一种稍微更安全的方法可能是将组2设置为[-?\w+]+,这将在等号后至少需要一个\w个字符。快乐的编码! :)