在配置单元上第 n 次出现分隔符之前获取所有内容
Get everything before nth occurrence of delimiter on hive
我已经搜索了很多正则表达式匹配器,我有这样的字符串:
KRW3TR.899877.GR0054656*DR.798012...2..............GR0054656*EUR*
我已经用这个提取了,但是失败了。
REGEXP_EXTRACT(acolumn,'^([^\.]+)\.?',2)
我想要的是
KRW3TR.899877
如何正则表达式提取/trim/正则表达式替换这个?
任何 help/ideas 将不胜感激。谢谢。
您可以使用 substring_index
,其中 returns 给定分隔符 (.) 的给定出现次数 (2) 之前的子字符串:
SELECT substring_index(
'KRW3TR.899877.GR0054656*DR.798012...2..............GR0054656*EUR*',
'.',
2
);
使用正则表达式:
select regexp_extract('KRW3TR.899877.GR0054656*DR.798012...2..............GR0054656*EUR*',
'^([^.]*\.[^.]*)'
,1) --extract group number 1
正则表达式含义:
^ - beginning of the string anchor
[^.]* - not a dot 0 or more times
\. - dot
[^.]* - not a dot 0 or more times
结果:
KRW3TR.899877
我已经搜索了很多正则表达式匹配器,我有这样的字符串:
KRW3TR.899877.GR0054656*DR.798012...2..............GR0054656*EUR*
我已经用这个提取了,但是失败了。
REGEXP_EXTRACT(acolumn,'^([^\.]+)\.?',2)
我想要的是
KRW3TR.899877
如何正则表达式提取/trim/正则表达式替换这个?
任何 help/ideas 将不胜感激。谢谢。
您可以使用 substring_index
,其中 returns 给定分隔符 (.) 的给定出现次数 (2) 之前的子字符串:
SELECT substring_index(
'KRW3TR.899877.GR0054656*DR.798012...2..............GR0054656*EUR*',
'.',
2
);
使用正则表达式:
select regexp_extract('KRW3TR.899877.GR0054656*DR.798012...2..............GR0054656*EUR*',
'^([^.]*\.[^.]*)'
,1) --extract group number 1
正则表达式含义:
^ - beginning of the string anchor
[^.]* - not a dot 0 or more times
\. - dot
[^.]* - not a dot 0 or more times
结果:
KRW3TR.899877