【问题标题】:hive string extraction蜂巢字符串提取
【发布时间】:2020-12-18 18:01:36
【问题描述】:

我有一列的值类似于https://ysd.com/ert490ghlkh/gsum

我想获取com/ 之后和/gsum 之前的所有字符。事先,我知道在 .com/ 之后要获取多少个字符。就像我知道必须在 .com 之后获取 11 个字符。

我试过了

REGEXP_REPLACE(REGEXP_REPLACE(column1, 'https://ysd.com/', ''), '/gsum', '')

这似乎并不理想,因为最后一部分 /gsum 可能会有所不同。在这种情况下,我必须写不等于唯一最后一部分的 case 语句。

谁能说出如何在特定子字符串之后获取字符数?

【问题讨论】:

    标签: regex string hive hiveql


    【解决方案1】:

    你可以使用

    REGEXP_REPLACE(column1, 'https://ysd\\.com/([^/]+).*', '\\1')
    

    regex demo

    详情

    • https://ysd\\.com/ - https://ysd.com/ 字符串
    • ([^/]+) - 第 1 组(\1 是对替换模式中使用的组值的反向引用):除 / 之外的任何一个或多个字符
    • .* - 除换行符之外的任何 0 个或多个字符,尽可能多。

    【讨论】:

      【解决方案2】:

      在斜线之间提取组:

      select REGEXP_REPLACE('https://ysd.com/ert490ghlkh/gsum', '.*/(.*)/.*', '$1')
      

      结果:

      ert490ghlkh
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-20
        • 2016-12-20
        • 1970-01-01
        • 2016-12-19
        • 1970-01-01
        • 2013-08-08
        • 1970-01-01
        • 2018-02-12
        相关资源
        最近更新 更多