2010-05-10 5 views
1

Donc, j'adapte du code que j'ai trouvé en ligne pour répondre à mes besoins. Cependant, ma fonction set_pixel a deux autres paramètres. Comme il y a beaucoup d'appels à cette fonction, même faire un collage rapide serait très fastidieux. Donc, j'ai pensé que ce serait un bon moment pour moi d'apprendre quelques expressions régulières simples.Recherche simple et remplacement de l'expression régulière

Alors, j'ai des appels de ce type:

set_pixel(arg1, arg2);

que je veux changer quelque chose comme:

set_pixel(arg1, arg2, arg3, arg4);

Note: arg1 et et 2 doivent être conservés, alors que arg3 et arg4 sont la plupart du temps les mêmes.

Comment puis-je y parvenir?

+0

Quelle langue de programmation le fait postuler à? Par exemple, en C#, vous pouvez utiliser une méthode surchargée qui prend deux arguments, en génère deux de plus et passe la liste entière à une seconde méthode. En outre, un peu plus d'informations sur ce que sont les arguments et comment vous voulez les analyser serait utile. – JYelton

+0

J'aime mentionner quelques outils ici. Pour créer des regex j'aime regexdesigner de radsoft http://www.radsoftware.com.au/regexdesigner/. Pour utiliser les expressions rationnelles créées, utilisez un outil compatible standard tel que sed ou grep. Il y a aussi un outil appelé grepwin qui remplace très bien les fenêtres. – schoetbi

+1

Devrait-il correspondre 'set_pixel (set_pixel (1,2), 3)'? – kennytm

Répondre

1
/set_pixel\(([^,)]*),([^,)]*)\)/ 

remplacer par

set_pixel(\1,\2,arg3,arg4) 

En fonction de la langue et la situation que vous pourriez être mieux servis mais avec une sorte d'outil de refactoring, les paramètres par défaut, la surcharge, etc.

+0

J'utilise CodeBlocks intégré dans Rechercher et remplacer avec la case à cocher Expression Régulière cochée, mais il est dit que je ne reçois aucune correspondance ... – nunos

+1

Laissez les barres obliques avant et arrière, elles sont des délimiteurs communs de regex dans des langages comme JavaScript et d'autres, mais vous n'en avez pas besoin dans un outil de développement comme CodeBlocks. –

0

Vous pouvez utiliser quelque chose comme ceci:

s/set_pixel\(([a-zA-Z0-9_]*), ([a-zA-Z0-9_]*)\);/set_pixel\($1, $2, arg3, arg4\);/g 

avec votre jouet préféré expression régulière. Vous voudrez modifier les classes de caractères en fonction des entrées que vous attendez de set_pixel.

Questions connexes