我想使用regexp_extract
函数在Hive / Impala中捕获和提取两个字符(/
和-
)之间的所有字词以及来自文本的开头直到字符-
。
我有一个这样的字符串:
key1-value1/key2-value2/key3-value3/keyN-valueN
我希望函数提取:
key1
key2
key3
keyN
键值对的出现次数可变
例如:
abc-bca/abc.s-13:13:13/any-x/keyn-1
我希望功能能够提取我:
abc
abc.s
any
keyn
我正在使用以下正则表达式,但它仅在我有3个键时才有效:
^(.+)-(?:.+)/(.+)-(?:.+)/(.+)-(?:.$)
如何将其扩展为n(变量)键?
由于
答案 0 :(得分:0)
如果它支持lookbehind
(?<=^|\/)[^\-]*
或者它是否支持perl表示法\K
(?:^|\/)\K[^\-]*
^|\/
:匹配行首或/
[^\-]
:匹配除-
答案 1 :(得分:0)
select explode( split(regexp_replace('key1-value1/key2-value2/key3-value3/keyN-valueN','(?<=^|/)(.*?\\-)',''),'/')) as col1