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

StackOverflow https://stackoverflow.com/questions/1614478

  •  06-07-2019
  •  | 
  •  

我有一个查询,我想要替换

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

http://regexr.com/3gm6c

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top