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

Substitution de caractères

2 réponses
Avatar
BillyNoGates
Bonjour,

j'ai une petite question concernant une expression r=E9guliere, en fait
je cherche, =E0 partir d'une chaine de caract=E8res (ex: "Le prix est 22
154,45 =80") =E0 supprimer tous les caract=E8res non num=E9rique mais
(petite subtilit=E9) en gardant le point virgule. (de fa=E7on =E0
recup=E9rer que "22154,45")

pour supprimer les caract=E8res je vois comment faire mais c'est le
point virgule qui me pose pb.

Quelqu'un peut m'aider ?

Merci d'avance

2 réponses

Avatar
Paul Gaborit
À (at) 14 Nov 2005 09:08:19 -0800,
"BillyNoGates" écrivait (wrote):
j'ai une petite question concernant une expression réguliere, en fait
je cherche, à partir d'une chaine de caractères (ex: "Le prix est 22
154,45 €") à supprimer tous les caractères non numérique mais
(petite subtilité) en gardant le point virgule. (de façon à
recupérer que "22154,45")

pour supprimer les caractères je vois comment faire mais c'est le
point virgule qui me pose pb.

Quelqu'un peut m'aider ?


Une méthode de suppression qui marche sur votre exemple (mais pas dans
tous les cas) :

$texte = "Le prix est 22 154,45 euros";
$texte =~ s/[^d,.]//g;

Dans le cas général, il vaut mieux essayer de reconnaître les nombres :

$texte = "Le prix est 22 154,45 euros au lieu de 22.34 francs";
@nombres = $texte =~ m/([ds_]*d(?:[,.]d+))/g;
s/s//g foreach @nombres;
s/,/./ foreach @nombres;
print "@nombresn";

(sans garantie...)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
BillyNoGates
Merci beaucoup pour votre réponse