对正则表达式的世界来说比较陌生,所以请耐心听我说。我试图使用regexp\u extract来提取字符串中的某个数据子集,但是对于我当前尝试使用的正则表达式,它会返回null。
要求如下:-
字符串-->测试=1233]3212]-->提取1233
字符串-->测试=123355-->123355
其思想是在test=直到字符串的第一个]或结尾时提取所有数据。
到目前为止,我试图通过hive的regexp\u提取使用的正则表达式是--> 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)
谢谢你的建议。我已经走到一半了:(
1条答案
按热度按时间e4yzc0pl1#
你可以用
似乎用它更合适
regexp_replace
这里,因为你想得到整个输入时,没有匹配。你可以用
查看regex演示。
正则表达式将匹配一个完整的字符串,它将删除除1个或多个字母和数字以外的所有文本
test=
将返回子字符串或整个输入。如果能有任何字符,但是
]
,使用查看另一个regex演示。