在 PL/SQL Developer Find & Replace 中使用正则表达式模式时,如何访问匹配的对象以进行替换?

Posted

技术标签:

【中文标题】在 PL/SQL Developer Find & Replace 中使用正则表达式模式时,如何访问匹配的对象以进行替换?【英文标题】:How do I access matched objects for replacement when using regular expression mode in PL/SQL Developer Find & Replace? 【发布时间】:2009-10-23 16:13:44 【问题描述】:

我有一个要替换的查询

avg(j2)

avg(case when j2 <> 0 then j2 else 0 end)

上面是一个具体的例子,但所有替换的模式都是一样的。它总是一个单词后跟一个数字,需要用检查数字是否不为 0 的 case 语句替换。

我尝试了以下查找:

avg(\(\w\d\))

并且查找有效。现在,我想做一个替换,所以我尝试:

avg(case when \1 <> 0 then \1 else 0 end)

但它放置文字 \1 而不是从匹配中捕获的文本。我也尝试了\\1$1,它从字面上理解了所有这些。谁能告诉我使用捕获的文本进行替换的正确语法是什么?支持吗?

谢谢,

阿什

【问题讨论】:

【参考方案1】:

我不确定 PL/SQL Developer IDE 是否支持组捕获。不过,最近的版本似乎确实支持基于正则表达式的查找和替换。无法找到来源以确认组捕获是否有效。 为什么不尝试将代码粘贴到 Notepad++ 中并尝试相同的正则表达式。它应该工作。您可以将结果粘贴回您的 IDE 并从那里继续...

【讨论】:

【参考方案2】:

您可以使用 $ 和数字替换它, $0$1 等。请参阅下面的示例

find: TABLE (.*\..*) IS
replace: COLUMN $1 IS

http://regexr.com/3gm6c

【讨论】:

以上是关于在 PL/SQL Developer Find & Replace 中使用正则表达式模式时,如何访问匹配的对象以进行替换?的主要内容,如果未能解决你的问题,请参考以下文章

pl/sql developer中文乱码,为啥呢?怎么解决?Oracle问题

pl sql developer怎么执行sql

pl/sql developer和sql developer有啥区别?

在 PL/SQL Developer 中运行的日期查询显示时间,但在 Oracle SQL Developer 中不显示

pl sql developer怎么执行sql

PL/SQL Developer 替代方案 [关闭]