Hive:从/分隔列中提取子字符串
Posted
技术标签:
【中文标题】Hive:从/分隔列中提取子字符串【英文标题】:Hive: Extracting sub-string from / separated column 【发布时间】:2019-06-06 23:32:14 【问题描述】:我的表格有如下条目:
this/is/my/dir/file
this/is/my/another/dir/file
我想显示不带 /filename 的字符串:
this/is/my/dir
这是我的代码:
select regexp_replace(filepath,'[^/]+[/]$','')
【问题讨论】:
你的想法是正确的,只是倒退了。[/][^/]+$
,或者更简单地说,\/[^/]+$
。
【参考方案1】:
你可以使用
select regexp_replace(filepath,'/[^/]+$','')
查看regex demo 和regex graph:
正则表达式详细信息
/
- 一个 /
字符
[^/]+
- 除了/
之外的 1+ 个字符
$
- 字符串结束。
【讨论】:
【参考方案2】:在这里,我们可以使用类似于以下的表达式:
(.+)(\/.+)
我们的代码可能如下所示:
select regexp_replace(filepath,'^(.+)(\/.+)$','$1')
或
select regexp_replace(filepath,'(.+)(\/.+)','$1')
我们想要的输出在第一个捕获组$1
,后面是最后一个斜杠和文件名,在第二个捕获组$2
。
Demo
【讨论】:
以上是关于Hive:从/分隔列中提取子字符串的主要内容,如果未能解决你的问题,请参考以下文章