【问题标题】:How to replace first occurrence of a pattern如何替换第一次出现的模式
【发布时间】:2019-12-11 12:12:39
【问题描述】:

我正在尝试使用 regexp_replace 函数清理配置单元表中的一些城市名称。

例如,我想将城市名称“St Stephens”更改为“Saint Stephens”,将“S Salt Lake City”更改为“South Salt Lake City”。

我正在尝试regexp_replace(city,’St ‘,’Saint’),但在“St Stephens”的情况下,我最终选择了“Saint Saintephens”

类似地,当我尝试替换“S Salt Lake City”的前导 S 时,我最终得到了“South Southalt Lake City”。

【问题讨论】:

  • 您最好将其限制在单词边界内。尝试查看 \b 单词边界正则表达式字符。
  • 首先您需要使用'St' 拆分列并将其作为列然后替换为 'Saint' 。然后将其连接为单列

标签: sql regex hive hiveql regexp-replace


【解决方案1】:

您需要添加字符串锚^ 的开头,并且不要忘记包含空格。这将仅替换字符串开头的St(St 和一个空格):

regexp_replace(city,'^St ','Saint ')

对于您的问题中的两个替换,简单的方法是应用 regexp_replace 两次:

regexp_replace(regexp_replace(city,'^St ','Saint '),'^S ','South ')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-15
    • 2011-12-19
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多