我需要用例如替换这个
:VARCHAR_1
来自这个字符串:'if :VARCHAR_1 = "1"'
。数字 1,如果冒号后面有类似 :P4_VARCHAR_1
的内容(如果它实际上是页面项),则忽略它。
我已经通过在线生成器在线制作了其中几个正则表达式,但由于某种原因,Oracle 的规则似乎不起作用......
这是一个应该实际工作的示例正则表达式:
select REGEXP_REPLACE('if :P4_VARCHAR_1 = "1"', ':([^P]|P[^\d_])(\w+)', '1') from dual;
这里我预计不会有任何改变,输出:
if :P4_VARCHAR_1 = "1"
对于这种情况:
select REGEXP_REPLACE('if :VARCHAR_1 = "1"', ':([^P]|P[^\d_])(\w+)', '1') from dual;
输出:
if 1 = "1"
那么如何在oracle中使其工作
字符类中无法识别“digit”的“\d”快捷方式。将其替换为“[0-9]”:
SELECT REGEXP_REPLACE('if :P4_VARCHAR_1 = "1"', ':([^P]|P[^[0-9]_])(\w+)', '1')
FROM DUAL
退货
if :P4_VARCHAR_1 = "1"