【问题标题】:How to remove non Ascii characters(non keyboard special charecters) from a text in hive如何从配置单元中的文本中删除非 Ascii 字符(非键盘特殊字符)
【发布时间】:2021-02-23 15:49:42
【问题描述】:

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

我的表中有一些无效字符,我正在尝试删除它们。但是我遇到了其中一个问题。

例子:

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

预期输出:

123Abh street

目前我正在使用

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

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

【问题讨论】:

  • '[^\\x{0000}-\\x7D]+'怎么样
  • 谢谢它正在工作! @wiktor Stribizew 如果我需要删除除 hive 中的空格和连字符之外的所有特殊字符怎么办。regrelpace 语句将如何?提前谢谢你!

标签: regex hive ascii hql


【解决方案1】:

你可以使用

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

这里,

  • [^ - 否定字符类的开始,它匹配任何字符,但
    • \x{0000}-\x7E - ASCII 表中从 NULL~ 的字符
  • ]+ - 课程结束,匹配一次或多次。

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

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

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

【讨论】:

  • 感谢 Wiktor,它正在工作。!!在一项要求中需要帮助。 1. 在一个字符串中,我想用 '' 替换除 (0-9,A-Z,a-z,-,_) 之外的所有内容 2. 在一个字符串中,用 '' 替换除 0-9(零到九)之外的所有内容帮助!
  • @ap23451 如果它有效,请考虑接受答案(通过单击左侧的灰色勾号)。 1) [^0-9A-Za-z_-] 替换为 "。 2)[^0-9]替换为"
  • 我已经接受了答案.. 你能帮我解决以下问题吗: 1. 在一个字符串中,我想替换除 (0-9,A-Z,a-z,-, 之外的所有内容) 与 '' 2. 在字符串中,用 '' 替换除 0-9(零到九)之外的所有内容 3. 在字符串中,我想替换除 (0-9,A-Z,a-z,-,之外的所有内容>) 和空格 '' 提前致谢
  • @ap23451 第 1 点和第 2 点已经在前面的评论中解释过了。 3)[^0-9A-Za-z -] 并替换为您需要的任何内容。
  • 嗨 Wiktor 感谢您在这里提供的所有帮助。我在 hive 中有类似的数据集,但我只想用单引号替换制表符和空白字符。我该怎么做?跨度>
猜你喜欢
  • 1970-01-01
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多