regex - Hive - 多个字符串的 regexp_replace 函数

标签 regex hadoop hive hiveql

我正在使用配置单元 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/

相关文章:

regex - 根据文件名使用 bash 和 Perl 批量重命名文件

sql - Hive 中的分层抽样

json - HIVE - 加载推特 JSON 数据时出错

regex - Symfony 字母数字验证器

java - 如何在 Android Java 中合并正则表达式中的两个或多个条件?

java - 如何使用正则表达式操作给定的字符串以获得两个不同的字符串?

hadoop - hive 分组者包含重复结果

java - reduce()方法中键的输入顺序是什么

java - 我在运行 map 缩减排序程序时遇到错误

scala - 使用spark scala将行转换为列