gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 14:11:42 25 4
gpt4 key购买 nike

我一直在尝试弄清楚如何删除多个非字母数字或非数字字符,或者仅返回字符串中的数字字符。我试过:

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

最佳答案

另见 hive regexp_extract weirdness

我认为 regex_extract 只会返回第三个参数中指定的组号。

regex_extract 似乎只能在一行上工作然后退出。

我不知道替换对应物。

它可能适用于非字母数据,但如果你给它这样的东西

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


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

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

regexp_extract('XYZ789', '[a-zA-Z]+', 0) 用于多个 alpha。

关于regex - 如何使用 Hive REGEXP_EXTRACT() 函数删除非字母数字或非数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21413456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com