你好,我有以下 PL\SQL 块
DECLARE
v_clob CLOB := 'This is a sample SQL query /* APPEND PARALLEL(table) hint */ with a hint. /* PARALLEL(table) hint */';
v_new_clob CLOB;
BEGIN
-- Replace the comment containing 'APPEND PARALLEL' with an empty string
v_new_clob := REGEXP_REPLACE(v_clob, '/\*.*?APPEND\s+PARALLEL.*?\*/',null); /* '', 1, 0, 'i'*/
-- Output the modified CLOB
DBMS_OUTPUT.PUT_LINE(v_new_clob);
END;
其结果是:
This is a sample SQL query with a hint. /* PARALLEL(table) hint */
上述模式的目的是捕获动态 SQL 查询中包含 APPEND 的并行提示。
我想为 REGEXP_REPLACE 创建一个模式,以捕获并行提示并确保不包含 APPEND。因此,我需要的上述 CLOB 结果是:
This is a sample SQL query /* APPEND PARALLEL(table) hint */ with a hint.
提前致谢!
您可以匹配:
(/\*.*?)
- 评论的开始,在捕获组中;(
- 捕获组的开始;(APPEND\s+PARALLEL\s*\(.*?\))
-APPEND PARALLEL
捕获组中的提示;|
- 或者;PARALLEL\s*\(.*?\)
-PARALLEL
提示(不带APPEND
);)
- 第二个捕获组的结束;(.*?\*/)
- 注释的结尾,以捕获组的形式。并将其替换为,第 1、第 3 和第 4 个捕获组,除了没有 的提示
\1\3\4
的情况之外的所有内容。PARALLEL
APPEND
像这样:
输出:
小提琴
如果您想删除整个评论,那么:
输出:
小提琴