获取hive上分隔符第n次出现之前的所有内容



我已经搜索了许多正则表达式匹配器,我有这样的字符串:

KRW3TR.899877.GR0054656*DR.798012...2..............GR0054656*EUR*

我已经用这个提取了,但是它失败了。REGEXP_EXTRACT(acolumn,'^([^.]+).?',2)

我想要的是KRW3TR.899877

如何regexp提取/修剪/regexp取代这个?

任何帮助/想法将不胜感激。谢谢你。

使用regexp:

select regexp_extract('KRW3TR.899877.GR0054656*DR.798012...2..............GR0054656*EUR*',
'^([^.]*\.[^.]*)' 
,1) --extract group number 1

Regexp的意义:

^ - beginning of the string anchor
[^.]* - not a dot 0 or more times
\. - dot
[^.]* - not a dot 0 or more times
结果:

KRW3TR.899877

您可以使用substring_index,它返回给定分隔符(.)出现次数(2)之前的子字符串:

SELECT substring_index(
'KRW3TR.899877.GR0054656*DR.798012...2..............GR0054656*EUR*', 
'.',
2
);

最新更新