首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在单元格中使用Regexp_replace替换列中的多个字符串

在单元格中使用Regexp_replace替换列中的多个字符串
EN

Stack Overflow用户
提问于 2022-11-04 06:48:09
回答 2查看 31关注 0票数 0

我一直试图替换一个可以出现在Hive中的列中的子字符串列表:"SA“、"DE”、"CV“、"MI”等。

我试图使用Hive中的regexp_replace函数替换它们。为了测试它,我写下了以下查询:

select regexp_replace(company_name," DE | SA | CV ", " "), company_name from table limit 20;

我认为它可以解决所有的问题,但是接下来我得到了同样的输出:

ALCA DE CV ->>>>>>>>> ALCA DE CV

墨西哥德拉米纳克( ->>>>>>>> )

我也尝试在字符的开头和前面插入\s*,但是输出是相同的。有办法一次把它们全部替换掉吗?谢谢

EN

回答 2

Stack Overflow用户

发布于 2022-11-04 07:09:01

因为在regex参数之前和之后都有空格。请用这个

代码语言:javascript
运行
复制
regexp_replace("MEXICANA DE SA LAMINACION SA CV "," DE| SA| CV", " ") 

select regexp_replace(company_name," DE| SA| CV", " "), company_name from table limit 20;

请注意,我在争论后使用了一个空格。如果你有一个以DE或SA或CV开头的词会引起问题,我们可以单独处理它们。

为什么您的代码不工作-当您将“SA”替换为"ALCA“中的”SA“>这将变成"ALCA”.But,如果您考虑“SA ",请注意,字符DE在字符串之前没有空格。这就是为什么DE不会被取代的原因。而且简历后面没有空格,所以它不会被替换。因此,这意味着您将得到"ALCA简历“。

票数 0
EN

Stack Overflow用户

发布于 2022-11-07 11:34:39

要删除regex中出现的子字符串列表,我使用了下面的查询(尽管如果它发生在单词的末尾,但我的用例可以处理从单词末尾删除的子字符串)。

regexp_replace(concat(company_name, " "), "ABP\\s|AC\\s|AMBI\\s|AR\\s|CV\\s|DE\\s|EN\\s|ENR\\s|IAP\\s", " ")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74313155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档