繁体   English   中英

HIVE regexp_extract URL字符串

[英]HIVE regexp_extract URL strings

嗨,我正在尝试使用Hive从日志中解析较大的URL。

我想从URL(strategy = ??)中提取一个特定的值,这些值可以连字符,但不总是连字符。

我建立了这个示例查询,但是它什么也不返回。

我究竟做错了什么?

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

因此,我期望获得的值是从此部分URL字符串重新定位 234 = 23234&werw = asdf&strategy = 重定向 &asdf = fds23

任何帮助是极大的赞赏!!!

我相信这个正则表达式将为您工作:

strategy=((\\w-?)+)

这是RegExr链接: http ://regexr.com?35sbl。 匹配后,组1包含strategy的值。 请注意,此正则表达式将匹配值中的任意数量的连字符。 如果连字符是第一个字符,它也会失败(尽管我认为前导连字符不会使值成为“连字符”)。

据我所知,由于组2的设置方式,您的方法未返回任何内容:您具有[-\\w*] ,其内容为“匹配连字符,然后匹配任意数量的字母数字字符(包括0)” 。 您也可以将其改写为[-?\\w*]* ,它表示“匹配或不匹配连字符,然后是任意数量的字母数字字符(包括0)”。 但是,在这种情况下,它将与连字符匹配

strategy=-

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM