在PL / SQL Developer中使用正则表达式模式时,如何访问匹配的对象以进行替换。更换?
题
我有一个查询,我想要替换
avg(j2)
与
avg(case when j2 <> 0 then j2 else 0 end)
以上是一个具体的例子,但所有替换的模式都是相同的。它总是一个单词后面跟一个数字,需要用case语句替换,以检查数字是否不为0.
我尝试了以下内容进行查找:
avg(\(\w\d\))
并且查找工作。现在,我想做一个替换,所以我尝试:
avg(case when \1 <> 0 then \1 else 0 end)
但它放置了文字\ 1而不是匹配中捕获的文本。我试过 \\ 1
&amp; $ 1
也是字面意义上的所有内容。谁能告诉我使用捕获的文本进行替换的正确语法是什么?这支持了吗?
谢谢,
与Ashish
解决方案
我不确定PL / SQL Developer IDE是否支持群组捕获。最近的版本确实似乎支持基于正则表达式的查找和替换。无法找到确认群组捕获是否有效的来源。 为什么不尝试在像Notepad ++这样的代码中粘贴代码并尝试使用相同的正则表达式。它应该工作。您可以将结果粘贴回IDE并从那里继续......
其他提示
您可以使用 $ 和数字替换它,例如, $ 0 或 $ 1 等。请参阅下面的示例
find: TABLE (.*\..*) IS
replace: COLUMN $1 IS
不隶属于 StackOverflow