Re: aide sur perl (suite)

Top Page

Reply to this message
Author: anne aublanc
Date:  
To: guilde
Subject: Re: aide sur perl (suite)

----- Original Message -----
From: "Patrice Karatchentzeff" <patrice.karatchentzeff@???>
To: "guilde" <guilde@???>
Sent: Thursday, November 14, 2002 8:56 AM
Subject: Re: aide sur perl (suite)


| Le Thu, 14 Nov 2002 07:27:19 +0100
| anne.aublanc@??? écrivait :

|
|
| > Me dire comment tester, toujours en perl, une ligne de ce type :
| > xxxxxx;yyyyyyy
| >
| > xxxxx = 1er champ
| > yyyyy = 2ème champ
| >
| > Les champs peuvent contenir n'importe quel caractère sauf le ;
| >
| > Les 2 champs sont séparés par un ;
| >
| > La ligne que j'ai écrite pour le test :
| > if ($ligne =~ m!(.*?);(.*?)$!gi)

|
| . trouve n'importe quel caractère (sauf \n)
| * trouve si 0 occurence (ou plus)
| ? trouve si 0 ou 1 occurence exactement

|
| .*? veut dire : « chaîne de n'importe quoi sauf un retour chariot, au
| besoin rien du tout, d'itération quelconque, présente une fois ou non ».

|
| >
| > cela fonctionnait jusqu'à ce que je rencontre un ' dans un des champs!
| >

|
| Le ' est un caractère interprété par Perl. Si tu le rencontres, tu dois
| aussi le tester :

|
| (.*?)||(\'*?)

|
| cela pour le motif générique « quelque chose (ou pas) suivi ' (ou pas) »

|
| et donc

|
| ((.*?)||(\'*?))*

|
| pour être générique.

|
| donc m/((.*?)||(\'*?))*/((.*?)||(\'*?))*/gi

|
| > Si vous avez la solution...

|
| Il se peut qu'il faille un peu adapter suivant ce que tu cherches
| vraiment...

|
Bon, je teste mais rien ne fonctionne, soit il se bloque sur l'enreg qui a '
, soit il ne trouve rien!

je donne quelques enregs :

anne aublanc;anne.aublanc@???

Jérôme KIEFFER;Jerome.KIEFFER@???

'Jérôme UZEL';jerome.uzel@???

Patrice Karatchentzeff;patrice.karatchentzeff@???



en résultat, je dois avoir :

champ 1                            champ 2
anne aublanc                    anne.aublanc@???
Jérôme KIEFFER           Jerome.KIEFFER@???
'Jérôme UZEL'                jerome.uzel@???
Patrice Karatchentzeff       patrice.karatchentzeff@???


Je peux avoir de 0 à x fois le caractère ' dans la 1ère partie de chaque
ligne avant ;.


Le code de départ :
if ($ligne =~ m!(.*?);(.*?)$!gi)

{

($fullname,$adresse) =

($1,$2);

....

merci

anne