使用hive regexp_replace

时间:2015-11-18 18:28:01

标签: regex hadoop hive regexp-replace

我需要从配置单元中的某个字段中删除美元符号和大括号。

样本数据:
$ 210.53
$ 210.53
($ 390.53)
($ 210.53)

问题是有些记录有大括号,有些则没有。以下是我提出的语法:
选择REGEXP_REPLACE(金额,'\(\ $ | \)','')作为表中的数量,其中id = 1234;
输出:
$ 210.53
$ 210.53
390.53
210.53

此语法不会从没有大括号的记录中删除美元符号。有人可以指导我吗?

2 个答案:

答案 0 :(得分:0)

如果你想从一个字段中删除a)美元符号和b)parens,你需要编写一个涵盖这两种情况的正则表达式。

案例A:

^\$

案例B:

^\(
\)$

将这些与|一起合并(交替)操作员

(^\$|^\(\$|^\(|\)$)

这就是:

  • $开头
  • ($ at at beginning
  • (开头
  • )最后

如果您确定您的数据总是看起来像您的示例,您可以将其简化为:

(^\(?\$|\)$)
  • $以可选的领先open-paren
  • 开头
  • close-paren at end

(或@stribizhev指出):

[$()]
  • 字符等于$,(,)

TMTOWTDI(取决于您的数据)

答案 1 :(得分:0)

我得到了它的工作:选择REGEXP_REPLACE(金额,'(| \ _ |)|','')作为表中的数量,其中id = 1234;