如何使用Hive REGEXP_EXTRACT()函数删除非字母数字或非数字字符

 泡泡 发布于 2023-01-30 18:31

我一直试图弄清楚如何删除多个非字母数字或非数字字符,或只返回字符串中的数字字符.我试过了:

SELECT
regexp_extract('X789', '[0-9]', 0)
FROM
table_name

但它返回'7',而不是'789'.

我还尝试使用NOT MATCH语法删除非数字字符^((?!regexp).)*$:

SELECT
REGEXP_REPLACE('X789', '^((?![0-9]).)*$', '')
FROM
jav_test_ii

regexp_extract可以返回多个匹配项吗?我真正想做的是清理我的数据只包含数字或字母数字字符.这似乎有助于删除不良字符,但它不是像[0-9]这样的字符范围.regexp_replace(string,' ','')

编辑:下面的查询能够返回'7789',这正是我想要的.

SELECT
regexp_replace("7X789", "[^0-9]+", "")
FROM
table_name

小智.. 21

另请参阅此hive regexp_extract怪异

我认为regex_extract只会返回第3个参数中声明的组号.

regex_extract 似乎只能在一条线上工作然后退出.

我不知道替换对手.

它可能适用于非alphanum数据,但如果你喂它这样的东西

REGEXP_REPLACE(error_code, '[^a-zA-Z0-9]+', '')


此外,对于提取,请参阅上面的链接,您可以将其更改为

regexp_extract('X789', '[0-9]+', 0) 多个数字.

要么

regexp_extract('XYZ789', '[a-zA-Z]+', 0) 多个alpha的.

1 个回答
  • 另请参阅此hive regexp_extract怪异

    我认为regex_extract只会返回第3个参数中声明的组号.

    regex_extract 似乎只能在一条线上工作然后退出.

    我不知道替换对手.

    它可能适用于非alphanum数据,但如果你喂它这样的东西

    REGEXP_REPLACE(error_code, '[^a-zA-Z0-9]+', '')


    此外,对于提取,请参阅上面的链接,您可以将其更改为

    regexp_extract('X789', '[0-9]+', 0) 多个数字.

    要么

    regexp_extract('XYZ789', '[a-zA-Z]+', 0) 多个alpha的.

    2023-01-30 18:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有