2009-10-23 4 views
1

J'ai une requête où je veux remplacerComment accéder aux objets correspondants à remplacer lors de l'utilisation du mode d'expression régulière dans PL/SQL Developer Find & Replace?

avg(j2) 

avec

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

Ce qui précède est un exemple spécifique, mais le modèle est le même avec tous les remplacements. Il est toujours un mot suivi d'un numéro qui doit être remplacée par la déclaration de cas qui vérifie si le numéro est 0.

J'ai essayé le suivant pour trouver:

avg(\(\w\d\)) 

et les travaux de trouver. Maintenant, je veux faire un remplacement si je tente:

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

mais il met littéralement \ 1 et non le texte capturé à partir du match. J'ai essayé aussi \\1 & $1 et il les prend tous littéralement. Quelqu'un peut-il me dire quelle est la bonne syntaxe pour l'utilisation du texte capturé pour le remplacement? Est-ce supporté?

Merci,

Ashish

Répondre

1

Je ne sais pas si l'IDE Developer PL/SQL prend en charge la capture du groupe. Les versions récentes semblent cependant supporter la recherche et le remplacement basés sur regex. Impossible de trouver une source pour confirmer si la capture de groupe fonctionne. Pourquoi ne pas essayer de coller le code dans quelque chose comme Notepad ++ et essayer la même regex. Ça devrait marcher. Vous pouvez coller le résultat à votre IDE et continuer à partir de là ...

0

Vous pouvez le remplacer en utilisant $ et le numéro comme, $ 0 ou $ etc, voir un exemple ci-dessous

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

http://regexr.com/3gm6c