我已经阅读了所有REGEXP_REPLACE文档,但没有找到我想要的任何内容。我想将两个元音之间的特定字符替换为另一个字符。
示例:
字符串:abcdeZebca 输出:abcdeSebca
字母Z被S取代,因为它在两个元音之间。那可能在SLQ Oracle吗?
答案 0 :(得分:3)
我猜你没有注意到文档中的反向引用:
SELECT
REGEXP_REPLACE(yourcolumn, '([aeiou])Z([aeiou])', '\1S\2')
FROM
yourtable
说明:
[aeiou]表示匹配任何单个元音。用括号括起来表示“并记住你在编号插槽中找到的内容,从1开始”插槽在整个表达式中从左到右编号 - 每个(括号表达式)都有自己的编号
因此,完整表达意味着: - 在插槽1中找到任何元音和存储 - 接着是Z. - 接着是插槽2中的任何元音和存储
替换字符串是: - 插槽1的内容 - S. - 插槽2的内容
因此
aZe -> aSe
eZi -> eSi
等等..