首页 > 解决方案 > 如何在 Hive 中替换字符串

问题描述

我的蜂巢表中有如下数据:

FirstName

Mr Tim Cannon
Guest
Miss Kerri Smith
Missra

我正在尝试使用

INITCAP(REGEXP_REPLACE('Miss Missra','(Mr.)|^Mr$|^Ms.$|^Ms$|^Mrs.$|^Mrs$|^Dr.$|^Dr$|^Miss$',' '))

但它仍然是一样的。

尝试使用时

INITCAP(REGEXP_REPLACE('Miss Missra','(\\+)|(Mr.)|^Mr$|^Ms.$|^Ms$|^Mrs.$|^Mrs$|^Dr.$|^Dr$|Miss',' '))

然后它将'Missra'替换为'Ra'

输出应该是:

FirstName

Tim Cannon
Guest
Kerri Smith
Missra

请建议我一些解决方法。

标签: sqlregexhivehiveql

解决方案


$表示行尾,在'^Miss'你有空间之后,不是行尾。'^Miss '应该可以正常工作。点(文字.)也应该被屏蔽,\\因为正则表达式中的点具有特殊含义 - 任何字符,而且您的意思似乎是字面上的点(.)。

^- 表示行锚的开头,顺便说一句,第一个正则表达式Mr\\.没有^锚,如果不是故意的,请修复它。如果您不仅要在开头替换这些表达式,请删除所有^

REGEXP_REPLACE('Miss Missra','Mr\\.|^Mr |^Ms\\. |^Ms |^Mrs\\. |^Mrs |^Dr\\. |^Dr |^Miss ',' ')

推荐阅读