gpt4 book ai didi

regex - 配置单元 regexp_extract 返回 NULL

转载 作者:行者123 更新时间:2023-12-04 17:43:03 25 4
gpt4 key购买 nike

对正则表达式的世界来说相对较新,所以请多多包涵。我正在尝试使用 regexp_extract 提取字符串中的特定数据子集,但它为我当前尝试使用的正则表达式返回 NULL。

要求如下:-

String --> test=1233]3212] --> 提取1233

字符串 --> 测试=123355 --> 123355

想法是提取 test= 之后的所有数据,直到字符串的第一个 ] 或结尾。

我现在尝试通过 Hive 的 regexp_extract 使用的正则表达式是 --> test=(.*?)]|.*

select regexp_extract('test=1233]','test=(.*?)]|.*',1);
--1233 (CORRECT)

select regexp_extract('test=1233]323]','test=(.*?)]|.*',1);
--1233 (CORRECT)

select regexp_extract('test=1233323abc','test=(.*?)]|.*',1);
--NULL (Should return 1233323abc)

非常感谢您的建议。我现在已经完成一半了:(

最佳答案

你可以使用

regexp_extract(col,'test=([^\\]]+)',1);

似乎在这里使用 regexp_replace 更合适,因为您希望在不匹配时获得整个输入。

你可以使用

regexp_replace(col, ".*?test=([0-9a-zA-Z]+).*", "$1")

参见 regex demo .

正则表达式将匹配整个字符串,它会删除所有文本,但 test= 子字符串后的 1 个或多个字母和数字将被返回,否则将返回整个输入。

如果除了]可以有任何字符,使用

regexp_replace(col, ".*?test=([^\\]]+).*", "$1")

参见 another regex demo .

关于regex - 配置单元 regexp_extract 返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53546566/

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