Oracle替换了一些重复的字符非数字

问题描述

任何人都可以帮助我为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 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...