在 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 developer有啥区别?
在 PL/SQL Developer 中运行的日期查询显示时间,但在 Oracle SQL Developer 中不显示