如何从配置单元中的文本中删除非 Ascii 字符(非键盘特殊字符)

How to remove non Ascii characters(non keyboard special charecters) from a text in hive

我想从我的文本中删除非 Ascii 字符并将其替换为“”。

我的 table 中有一些无效字符,我正试图将其删除。但是我 运行 遇到了其中一个问题。

示例:

123Abh¿½ï¿½ï¿½ï¿½ï¿½v streeÁÉÍÓt

预期输出:

123Abh street

目前我正在使用

regex_replace('123Abh¿½ï¿½ï¿½ï¿½ï¿½v streeÁÉÍÓt','[^[:print:]],'')

但这不起作用,有什么建议吗?

您可以使用

regex_replace('123Abh¿½ï¿½ï¿½ï¿½ï¿½v streeÁÉÍÓt', '[^\x{0000}-\x7E]+', '')

这里,

  • [^ - 匹配任何字符的取反字符 class 的开头,但
    • \x{0000}-\x7E - 从 NULL~ 字符的 ASCII table
  • ]+ - class结束,匹配一次或多次。

如果我需要删除除空格和连字符之外的所有特殊字符怎么办? - 在这种情况下,您需要使用

regex_replace('123Abh¿½ï¿½ï¿½ï¿½ï¿½v streeÁÉÍÓt', '[^\w\s-]|_', '')

这里,[^\w\s-]|_+匹配除字母、数字、_、空格和-以外的任何一个符号,或者下划线(注意\w匹配下划线,因此它必须通过 |、交替运算符添加)。