我想修复一些使用错误编码上传的数据。 请考虑以下示例:
RUE DE SAN MARTI¦O N¦ 123
我想将¦
替换为#
,但仅限于数字或字符N
我想要的输出是:
RUE DE SAN MARTI¦O N# 123
我尝试了以下替换:
SELECT REGEXP_REPLACE('RUE DE SAN MARTI¦O N¦ 123','[\d]\¦|[N]\¦','#')
FROM dual;
正确检测到要匹配的字符,但从我所知的替换字符串用作文字。不过,我想在N
之前保留¦
。
有没有人有解决类似问题的运气?
答案 0 :(得分:2)
您可以使用
([0-9N])¦
并替换为\1#
。
请参阅regex demo
<强>详情:
([0-9N])
- 与数字匹配的捕获组或N
(可以用替换模式中的\1
反向引用引用)¦
- 匹配文字符号。SELECT REGEXP_REPLACE('RUE DE SAN MARTI¦O N¦ 123','([0-9N])¦','\1#') AS Result FROM dual