Как получить доступ к соответствующим объектам для замены при использовании режима регулярных выражений в PL / SQL Developer Find & Replace? - PullRequest
1 голос
/ 23 октября 2009

У меня есть запрос, где я хочу заменить

avg(j2)

с

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

Выше приведен конкретный пример, но шаблон одинаков со всеми заменами. Это всегда слово, за которым следует число, которое необходимо заменить на регистр, который проверяет, не является ли число 0. 0. 1007 *

Я попробовал следующее для поиска:

avg(\(\w\d\))

и найти работает. Теперь я хочу сделать замену, поэтому я пытаюсь:

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

но он помещает литерал \ 1, а не захваченный текст из совпадения. Я тоже попробовал \\1 & $1, и буквально все они воспринимаются. Может кто-нибудь сказать мне, что правильный синтаксис для использования захваченного текста для замены? Это поддерживается?

Спасибо

Ashish

Ответы [ 2 ]

1 голос
/ 24 октября 2009

Я не уверен, что IDE разработчика PL / SQL поддерживает захват группы. Последние версии, похоже, поддерживают поиск и замену на основе регулярных выражений. Не могу найти источник, чтобы подтвердить, работает ли захват группы. Почему бы вам не попробовать вставить код в нечто вроде Notepad ++ и попробовать то же самое регулярное выражение? Он должен работать. Вы можете вставить результат обратно в вашу IDE и продолжить оттуда ...

0 голосов
/ 04 сентября 2017

Вы можете заменить его, используя $ и число, подобное, $ 0 или $ 1 и т. Д., См. Пример ниже

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

http://regexr.com/3gm6c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...