如何替换模式的首次出现

时间:2019-08-02 21:36:53

标签: sql regex hive hiveql regexp-replace

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

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

我正在尝试regexp_replace(city,’St ‘,’Saint’),但对于“圣史蒂芬斯”,我最终会遇到“圣圣弗朗西斯”

类似地,当试图替换“ S盐湖城”的领先S时,我最终得到“ South Southalt湖城”。

1 个答案:

答案 0 :(得分:2)

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

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

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

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