【发布时间】:2022-01-04 17:40:23
【问题描述】:
我需要将下面在 Oracle 中运行良好的正则表达式转换为 HIVE。正则表达式模式删除所有标点符号,除了('-' 和 '&' 撇号和空格)。
select
REGEXP_REPLACE (
TRANSLATE(
REGEXP_REPLACE( 'UNI''C...ER - BÉBI,,, DAS DE PORTUGAL, SGPS, S.A.', '[^[:alnum:] &-]', '' ),
'ÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜáçéíóúàèìòùâêîôûãõëü', 'ACEIOUAEIOUAEIOUAOEUaceiouaeiouaeiouaoeu'
),
' {2,}', ' ') SSS
from dual;
问题在于输出:
- Oracle 输出:“UNICER - BEBIDAS DE PORTUGAL SGPS SA”
- HIVE 输出:“UNIC...ER - BEBI,,, DAS DE PORTUGAL, SGPS, S.A.” (保留 '.' 和 ',')
我认为问题在于 [[:alnum:]] POSIX 字符类解释。
非常感谢。
【问题讨论】: