【问题标题】:Hive: Extracting sub-string from / separated columnHive:从/分隔列中提取子字符串
【发布时间】: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,'[^/]+[/]$','')

【问题讨论】:

  • 你的想法是正确的,只是倒退了。 [/][^/]+$,或者更简单地说,\/[^/]+$

标签: regex database hive hiveql


【解决方案1】:

你可以使用

select regexp_replace(filepath,'/[^/]+$','')

查看regex demoregex graph

正则表达式详细信息

  • / - 一个 / 字符
  • [^/]+ - 除了/ 之外的 1+ 个字符
  • $ - 字符串结束。

【讨论】:

    【解决方案2】:

    在这里,我们可以使用类似于以下的表达式:

    (.+)(\/.+)
    

    我们的代码可能如下所示:

    select regexp_replace(filepath,'^(.+)(\/.+)$','$1')
    

    select regexp_replace(filepath,'(.+)(\/.+)','$1')
    

    我们想要的输出在第一个捕获组$1,后面是最后一个斜杠和文件名,在第二个捕获组$2

    Demo

    【讨论】:

      猜你喜欢
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 2021-08-21
      • 2014-01-05
      • 2021-11-22
      • 2019-10-16
      相关资源
      最近更新 更多