Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

expression régulière a*b

1 réponse
Avatar
Dan
Bonjour,

Je cherche =E0 =E9crire un programme qui transforme les expressions du
type (a*b) en f(a,b)

Voici comment j'ai v=E9rifi=E9 que l'expression de d=E9part =E9tait du bon
format :

while (<>){
chomp;
while (s/\([a-b]\*[a-b]\)/a/g) {};
print "$_\n" ;
}
qui affiche a si c'est bon.



mais
while (<>){
chomp;
while (s/\(([a-b])\*([a-b])\)/f($1,$2)/g) {};
print "$_\n" ;
}

ne fera =E9videmment pas tous les remplacements n=E9cessaires.


Auriez-vous des id=E9es ?

Merci d'avance !

1 réponse

Avatar
Jean-Charles Gibier
Dan a écrit :
Bonjour,

Je cherche à écrire un programme qui transforme les expressions du
type (a*b) en f(a,b)

Voici comment j'ai vérifié que l'expression de départ était du bon
format :

while (<>){
chomp;
while (s/([a-b]*[a-b])/a/g) {};
print "$_n" ;
}
qui affiche a si c'est bon.



mais
while (<>){
chomp;
while (s/(([a-b])*([a-b]))/f($1,$2)/g) {};
print "$_n" ;
}

ne fera évidemment pas tous les remplacements nécessaires.


Auriez-vous des idées ?

Merci d'avance !



le "while" de la substitution est superflu.
S'il s'agit de répéter les substitutions sur chaque occurrence l'option
'g' fait l'affaire.

while (<>){
chomp;
s/(([a-b])*([a-b]))/f($1,$2)/g;
print "$_ n";
}