首页 > 解决方案 > 如何在 Hive 中最后一次出现单词后提取字符串

问题描述

我的一个 Hive 表中有我的字符串列

select * from
(
select "edition_xx/news/radio_today_news_xx" as my_column
union all 
select "edition_xx/news/news/television_1.3" as my_column
) A 

我想提取 . 之后的字符串部分news/。所以我的输出列看起来像

radio_today_news_xx
television_1.3

如何在 Hive 中使用正则表达式提取它?请注意,它news/可能会出现 X 次,我想要字符串在最后一次出现之后。

标签: sqlhivehiveql

解决方案


使用 split()

select  split(my_column,'(news/)+')[1] 
from
(
select "edition_xx/news/radio_today_news_xx" as my_column
union all 
select "edition_xx/news/news/television_1.3" as my_column
) A;

此正则表达式表示news/一次或多次

结果:

radio_today_news_xx
television_1.3
Time taken: 37.218 seconds, Fetched: 2 row(s)

推荐阅读