Re: aide sur perl (suite)

Top Page

Reply to this message
Author: Patrice Karatchentzeff
Date:  
To: guilde
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...

PK

-- 
Patrice KARATCHENTZEFF
STMicroelectronics           Tel:  04-76-92-63-81
850, rue Jean Monnet
38926 CROLLES Cedex, France  Courriel: patrice.karatchentzeff@???