我正在使用配置单元 0.13!我想在我的数据中找到多个标记,如“hip hop”和“rock music”,并将它们替换为“hiphop”和“rockmusic”——基本上替换它们时没有空格。我在配置单元中使用了 regexp_replace 函数。下面是我的查询,它适用于上述 2 个示例。
drop table vp_hiphop;
create table vp_hiphop as
select userid, ntext,
regexp_replace(regexp_replace(ntext, 'hip hop', 'hiphop'), 'rock music', 'rockmusic') as ntext1
from vp_nlp_protext_males
;
但是我有 100 个这样的二元语法/ngram,并且希望能够在我只删除空格的地方进行有效的替换。我可以模式匹配短语 - 嘻哈和摇滚音乐,但在替换中我想简单地修剪空白。以下是我尝试过的。我还尝试将 trim 与 regexp_replace 一起使用,但它需要 regexp_replace 函数中的第三个参数。
drop table vp_hiphop;
create table vp_hiphop as
select userid, ntext,
regexp_replace(ntext, '(hip hop)|(rock music)') as ntext1
from vp_nlp_protext_males
;
最佳答案
您可以使用 TRANSLATE
函数从字符串中去除所有出现的子字符串,以将子字符串替换为空字符串。对于您的查询,它将变成这样:
drop table vp_hiphop;
create table vp_hiphop as
select userid, ntext,
translate(ntext, ' ', '') as ntext1
from vp_nlp_protext_males
;
关于regex - Hive - 多个字符串的 regexp_replace 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28306355/