首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式替换字符串模式

正则表达式替换字符串模式
EN

Stack Overflow用户
提问于 2019-07-01 23:10:47
回答 3查看 87关注 0票数 0

我试图检查从列中排除字符串模式的最佳和最佳方法,而不影响实际数据。

在Redshift DW中,我有一个表列公司,它的某些记录以不同的方式以INC结尾,因此希望排除INC的字符串模式,只捕获公司名称。请参阅下面的样本数据和预期输出。

代码语言:javascript
复制
WITH T AS (
    select 'Cincin,Inc' id
    union all
    select 'Tinc, INc.' id 
    union all
    select 'Cloud' id 
    union all
    select 'Dinct Inc.' id 
)

select id , regexp_replace(id,{exp}) from T


/**OutPut***/
Cincin
Tinc
Cloud
Dinct
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-01 23:45:53

Redshift不支持regex不区分大小写,但考虑到目标字符串很小,您可以使用[Ii][Nn][Cc]不太痛苦地绕过它。

代码语言:javascript
复制
regexp_replace(id, ',? *[Ii][Nn][Cc]\.?$', '')

现场演示

测试:

代码语言:javascript
复制
WITH T AS (
    select 'Cincin,Inc' id
    union all
    select 'Tinc, INc.' id 
    union all
    select 'Cloud' id 
    union all
    select 'Dinct Inc.' id 
)    
select id , regexp_replace(id, ',? *[Ii][Nn][Cc]\.?$', '') from T

输出:

代码语言:javascript
复制
Cincin
Tinc
Cloud
Dinct
票数 1
EN

Stack Overflow用户

发布于 2019-07-01 23:25:50

尝试替换模式,?\s*Inc\.?$

代码语言:javascript
复制
select id, regexp_replace(id, ',?\\s*[Ii][Nn][Cc]\\.?$', '') from T
票数 0
EN

Stack Overflow用户

发布于 2019-07-01 23:44:49

如果你对这个案子没有分寸,你可以用它。

代码语言:javascript
复制
WITH T AS (
select 'Cincin,Inc' id
union all
select 'Tinc, INc.' id 
union all
select 'Cloud' id 
union all
select 'Dinct Inc.' id 

)

代码语言:javascript
复制
select id , regexp_replace(lower(iD),'[^a-z]+(inc)([^a-z])*','') 
from T

产出:

代码语言:javascript
复制
  id        regexp_replace
Cincin,Inc  cincin
Tinc, INc.  tinc
Cloud       cloud
Dinct Inc.  dinct
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56843485

复制
相关文章

相似问题

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