问题描述
任何人都可以帮助我为regexp_replace构建适当的语法,以从字符串中删除任何重复的非数字和非字母吗?如果数字/字母相乘-不会更改 例如。 来源和预期结果:
'ABBC000001223,ABC00000212,'
'ABBC000001223,'
(删除了第二个出现在逗号和第二个和第三个逗号之后的空间)
解决方法
使用此REGEXP_REPLACE
来匹配第一组中的任何非字母数字字符
([^[:alnum:]])
后跟一个或多个相同的字符(组1)
([^[:alnum:]])(\1)+
并将其替换为原始字符(第1组)
我添加了一些其他数据来证明结果
with dta as (
select 'ABBC000001223,ABC00000212,' txt from dual union all
select ',.,;,;;;;,#''++`´' txt from dual union all
select 'ABBC000001223ABC00000212' txt from dual)
select txt,regexp_replace(txt,'([^[:alnum:]])(\1)+','\1') result
from dta
TXT
-------------------------------
RESULT
--------------------------------
ABBC000001223,ABBC000001223,#'++`´,#'+`´
ABBC000001223ABC00000212
ABBC000001223ABC00000212