単語OFのインスタンスを "OF"に置き換えたいとします。私は完全な言葉でこれを働かせたいだけです。 L_OF、DOF、OFZ、DOFD、OF_Lなどではありません。Oracle regexp_replace on complete words
私のコードは、最後の文字列を除き、以下のように動作します。
それを返します:
("OF"*OF + 2)
を...代わりに:
("OF"*"OF" + 2)
私はそれは同様にその1つの上で動作するように取得できますか?
with stg as
(
select '(ofof+ol)' str from dual union all
select '(oof+ol+of)' from dual union all
select '(*of + 2)' from dual union all
select '(of*of + 2)' from dual
)
select str,
regexp_replace(upper(str), '(\W|^)(OF)(\W|$)', '\1"OF"\3') as str2
from stg
問題は、posix正規表現のルックアラウンドの欠如です。私はあなたがplsqlプロシージャに入れ、regexp_replaceをラウンドしたりネストしたり、別の置換で余分な引用符を削除したりしなければならないものを得たいと思っています。 – RLOG