我需要从 hive 的一块地上取下美元符号和大括号。样本数据:$210.53$210.53($390.53)($210.53)问题是有些记录有大括号,有些没有。下面是我想到的语法:从id=1234的表中选择regexp|u replace(amount,“\($|\)”,“”)作为amount;输出:$210.53$210.53390.53210.53此语法不会从没有大括号的记录中删除美元符号。有人能指导我吗?
t5zmwmid1#
我让它工作了:从id=1234的表中选择regexp|u replace(amount,'(| $)|','')作为amount;
67up9zun2#
如果要从字段中删除a)美元符号和b)paren,则需要编写一个包含这两种情况的正则表达式。案例a:
^\$
案例b:
^\( \)$
将它们与得到的|(交替)操作符合并在一起
(^\$|^\(\$|^\(|\)$)
也就是说:开始时为$(开始时为$)(开始时))最后如果您确定您的数据总是与示例相似,您可以将其简化为:
(^\(?\$|\)$)
$开头带有可选的前导打开参数结束时关闭paren(或者像@stribizhev指出的那样):
[$()]
等于$,(,)的字符tmtowtdi(取决于您的数据)
2条答案
按热度按时间t5zmwmid1#
我让它工作了:从id=1234的表中选择regexp|u replace(amount,'(| $)|','')作为amount;
67up9zun2#
如果要从字段中删除a)美元符号和b)paren,则需要编写一个包含这两种情况的正则表达式。
案例a:
案例b:
将它们与得到的|(交替)操作符合并在一起
也就是说:
开始时为$
(开始时为$)
(开始时)
)最后
如果您确定您的数据总是与示例相似,您可以将其简化为:
$开头带有可选的前导打开参数
结束时关闭paren
(或者像@stribizhev指出的那样):
等于$,(,)的字符
tmtowtdi(取决于您的数据)