【问题标题】:regexp replace _ with - in hive正则表达式在配置单元中将 _ 替换为 -
【发布时间】:2017-03-07 20:32:28
【问题描述】:

我的字符串值有时有两个下划线,有时一个用于国家/地区缩写,如下所示:

Cusco_DE_campaign_Million
Manzan_ES_CA_order_stra
Tijuan_FR_sitc_Mill

仅当国家缩写与一组大写字母(如 CA_FR 或 ES_CA 等)重复时,我才想用连字符替换下划线

所以输出应该是这样的:

Cusco_DE_campaign_Million
Manzan_ES-CA_order_stra
Tijuan_FR_sitc_Mill

如何使用 regex_replace 在 Hive SQL 中编写此代码?

谢谢!

【问题讨论】:

    标签: sql regex hive hiveql


    【解决方案1】:
    Replace _     preceded by 2 uppercase letters and _ / start of string   
              and followed by 2 uppercase letters and _ / end of string
    

    with t as
    (
        select  explode
                (
                    array
                    (
                        'Cusco_DE_campaign_Million'
                       ,'Manzan_ES_CA_order_stra'
                       ,'Tijuan_FR_sitc_Mill'
                    )
                ) as (val)
    )
    select  regexp_replace (val,'(?<=(^|_)[A-Z]{2})_(?=[A-Z]{2}(_|$))','-')
    from    t
    ;
    

    +---------------------------+
    | Cusco_DE_campaign_Million |
    +---------------------------+
    | Manzan_ES-CA_order_stra   |
    +---------------------------+
    | Tijuan_FR_sitc_Mill       |
    +---------------------------+
    

    【讨论】:

    • 你还在吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 2012-05-16
    • 1970-01-01
    • 2015-11-30
    • 2012-05-05
    • 1970-01-01
    相关资源
    最近更新 更多