Oracle,根据匹配的表达式替换REGEXP\u replace的字符串
我想修复一些使用错误编码上传的数据。 考虑下面的例子:Oracle,根据匹配的表达式替换REGEXP\u replace的字符串,regex,oracle,Regex,Oracle,我想修复一些使用错误编码上传的数据。 考虑下面的例子: RUE DE SAN MARTI¦O N¦ 123 我想用say#替换,但仅在前面有数字或字符N 我期望的输出是: RUE DE SAN MARTI¦O N# 123 我尝试了以下替换: SELECT REGEXP_REPLACE('RUE DE SAN MARTI¦O N¦ 123','[\d]\¦|[N]\¦','#') FROM dual; 它正确地检测要匹配的字符,但据我所知,替换字符串用作文本。但是,我想在之前保留N。
RUE DE SAN MARTI¦O N¦ 123
我想用say#
替换
,但仅在前面有数字或字符N
我期望的输出是:
RUE DE SAN MARTI¦O N# 123
我尝试了以下替换:
SELECT REGEXP_REPLACE('RUE DE SAN MARTI¦O N¦ 123','[\d]\¦|[N]\¦','#')
FROM dual;
它正确地检测要匹配的字符,但据我所知,替换字符串用作文本。但是,我想在
之前保留N
。
有人解决过类似问题吗?您可以使用
([0-9N])¦
并替换为\1
见
详细信息:
-与数字或([0-9N])
匹配的捕获组(可通过替换模式中的N
反向引用进行引用)\1
-匹配文字符号
正则表达式从来都不是我的强项,非常感谢。这是一种魅力!
SELECT REGEXP_REPLACE('RUE DE SAN MARTI¦O N¦ 123','([0-9N])¦','\1#') AS Result FROM dual