hive/impala-capture word between 2 char

stszievb  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(286)

我想捕捉和提取,在Hive/ Impala 使用 regexp_extract 函数,两个字符之间的所有单词( / 以及 - )也是从文字开始到文字的第一个字 - .
我有这样一根线: key1-value1/key2-value2/key3-value3/keyN-valueN 我希望函数提取:
key1 key2 key3 keyN 键值对的出现次数可变。
如: -bca/.s-13:13:13/any-x/keyn-1 我想让函数提取我:
abc .s any keyn 我使用的是以下正则表达式,但只有当我有3个键时它才起作用: ^(.+)-(?:.+)/(.+)-(?:.+)/(.+)-(?:.$) 如何将其扩展到n(可变)键?
谢谢

ftf50wuq

ftf50wuq1#

如果它支持lookback

(?<=^|\/)[^\-]*

或者它是否支持perl表示法 \K ```
(?:^|/)\K[^-]*

正则表达式101 `^|\/` :匹配行或
/ `[^\-]` :匹配除 `-` 
jutyujz0

jutyujz02#

select explode( split(regexp_replace('key1-value1/key2-value2/key3-value3/keyN-valueN','(?<=^|/)(.*?\\-)',''),'/')) as col1

regexp\u replace,替换从行首或从斜杠到连字符(-)的所有字符。
split函数基于“/”转换字符串的左边。
explode函数将数组元素转换为行。

相关问题