OVH Cloud OVH Cloud

expression régulière

4 réponses
Avatar
Nicolas
Bonjour,

dans une chaine de ce type $A[$i+1]=$B[$i]+1

je cherche à remplacer $A par $T{A}-> et $B par $T{B}->

J'ai donc fait ça :

s/\$(\w+)/\$Tableau\{$1\}->/g

mais du coup le $i sont remplacé aussi, ce que je voudrais c'est que
n'importe quelle variable soit remplcée sauf i et j.

Merci pour un petit coup de main.

Nicolas.

--
Powered .~.
by Linux /V\ Enlever
------ // \\ Take off
solutions for /( )\ BULBA
smart penguins ^`~'^

4 réponses

Avatar
Nicolas

s/$(w+)/$Tableau{$1}->/g


lire s/$(w+)/$T{$1}->/g

Et en fait l'idéal c'est que les variables entre [] ne soient pas
remplacées.

Nicolas.

--
Powered .~.
by Linux /V Enlever
------ // Take off
solutions for /( ) BULBA
smart penguins ^`~'^

Avatar
Antoun
Nicolas wrote:

s/$(w+)/$Tableau{$1}->/g



lire s/$(w+)/$T{$1}->/g

Et en fait l'idéal c'est que les variables entre [] ne soient pas
remplacées.

Nicolas.



J'ai noté que tes variables à remplacer sont en majuscules, alors que i
et j sont en minuscules...

s/$([A-Z])/$T{$1}->/g ;


Avatar
Antoun
lire s/$(w+)/$T{$1}->/g

Et en fait l'idéal c'est que les variables entre [] ne soient pas
remplacées.


autre démarche : toute variable à remplacer est suivie d'une expression
entre crochets qui doit rester telle quelle :

s!$(w)([.+?])!$T{$1}->$2!g ;

Avatar
Nicolas

lire s/$(w+)/$T{$1}->/g

Et en fait l'idéal c'est que les variables entre [] ne soient pas
remplacées.



autre démarche : toute variable à remplacer est suivie d'une expression
entre crochets qui doit rester telle quelle :

s!$(w)([.+?])!$T{$1}->$2!g ;


Merci pour tes réponses, mais comme parfois il n'y aura pas de [],
je me suis inspiré de ce que tu as fait :

$formule =~ s/$([A-Za-hl-z0-9]+)/$T{$1}/g ;
$formule =~ s/[/->[/g ;

Merci.

Nicolas.

--
Powered .~.
by Linux /V Enlever
------ // Take off
solutions for /( ) BULBA
smart penguins ^`~'^