OVH Cloud OVH Cloud

Regex: éliminer un caractère 'étrange' ?

7 réponses
Avatar
ctobini
Bonjour,

J'ai un petit probl=E8me avec le formatage d'un texte :

J'ai =E0 l'=E9cran ;1?862; et je voudrais =E9liminer le caract=E8re entre
1 et 862 mais je ne sais pas ce qu'il faut indiquer =E0 Perl en regex vu
que je ne connais pas le format de ce caract=E8re.

Merci si vous pouvez m'aiguiller,

C=2E Tobini

7 réponses

Avatar
ctobini
Je précise que le caractère affiché '?' dans mon post est
représenté par un losange noir avec un '?' blanc à l'intérieur. Je
travaille sur des fichiers provenant de Windows, reconnus comme
iso-8859-15 ou ASCII par utrac.

Désolé pour le double post,

C. Tobini
Avatar
Patrick Texier
Le 30 Nov 2006 03:13:24 -0800, ctobini a écrit :

Je précise que le caractère affiché '?' dans mon post est
représenté par un losange noir avec un '?' blanc à l'intérieur. Je
travaille sur des fichiers provenant de Windows, reconnus comme
iso-8859-15 ou ASCII par utrac.


Ce n'est probablement ni l'un ni l'autre.

Vos précisions sont inutiles, il faut chercher le code de ce caractère
avec un éditeur hexa et faire la substitution avec ce code.

Avatar
ctobini
Bonjour et merci à vous deux pour vos réponses,

md_news :

S'il n'y a qu'une seule ligne, peu importe le caractère il suffit de se
baser sur ce qui l'entoure.

;1(.)862;

enlever $1

ou faire

(;1).(862;)

et concatener $1 et $2


En fait ce n'est pas possible car j'ai aussi par exemple ;5,562; du
coup comme ce caractère n'est pas reconnu le regex '.' renvoi
également le ',' voire ';' si j'ai ;5,562;6,458;

Patrick Texier :

Je ne connais pas grand chose dans ce domaine et suis un peu perdu avec
la doc que j'ai lu sur le net. Auriez-vous un nom d'éditeur
hexadécimal pour Linux ? Et comment effectuer la substitution une fois
que j'ai la correspondance ?

C. Tobini

Avatar
Paul Gaborit
À (at) 30 Nov 2006 08:42:33 -0800,
"ctobini" écrivait (wrote):
Je ne connais pas grand chose dans ce domaine et suis un peu perdu avec
la doc que j'ai lu sur le net. Auriez-vous un nom d'éditeur
hexadécimal pour Linux ? Et comment effectuer la substitution une fois
que j'ai la correspondance ?


Si c'est juste pour voir le codage du fichier, un truc du genre :

od -t c -t x1 fichier.txt | less

doit bien servir...

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

Avatar
ctobini

À (at) 30 Nov 2006 08:42:33 -0800,
"ctobini" écrivait (wrote):
Je ne connais pas grand chose dans ce domaine et suis un peu perdu avec
la doc que j'ai lu sur le net. Auriez-vous un nom d'éditeur
hexadécimal pour Linux ? Et comment effectuer la substitution une fois
que j'ai la correspondance ?


Si c'est juste pour voir le codage du fichier, un truc du genre :

od -t c -t x1 fichier.txt | less

doit bien servir.../>


D'accord merci, je ne connaissais pas l'utilitaire. J'ai vu que j'ai
une ligne des caractères lisibles et leur correspondance
héxadécimale

Et une fois que j'ai le code héxa, comment je peux effectuer une
substitution pour l'éliminer s/code// ?

C. Tobini


Avatar
Paul Gaborit
À (at) 30 Nov 2006 09:45:42 -0800,
"ctobini" écrivait (wrote):
Et une fois que j'ai le code héxa, comment je peux effectuer une
substitution pour l'éliminer s/code// ?


$text =~ s/x{xx}//g;

Où xx est le code héxadécimal trouvé.

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

Avatar
ctobini
Merci beaucoup pour ces infos, ça marche parfaitement (jen'en doutais
pas :-) ) c'est une solution qui me sera très utile par la suite !

Bonne soirée et bon week-end,

C. Tobini


À (at) 30 Nov 2006 09:45:42 -0800,
"ctobini" écrivait (wrote):
Et une fois que j'ai le code héxa, comment je peux effectuer une
substitution pour l'éliminer s/code// ?


$text =~ s/x{xx}//g;

Où xx est le code héxadécimal trouvé.

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