perl + regex [resolu]

perl + regex [resolu] - Perl - Programmation

Marsh Posté le 09-07-2004 à 16:26:44    

Bonjour,
voici un bout de code en perl
 

Code :
  1. $text = "62.184.44.2 ServerBanner %KeyList=[Port,Protocol,ServerName] %Reference=\"NSA.ServerBanner.telnet.TCP\" Port=23 Protocol=\"TCP\" ServerName=\"telnet\"";
  2. $text =~ s/%[A-Za-z]*\s/\s/;
  3. print "text=".$text;


 
j'aimerai remplacer les chaines %[du texte][un espace] par un espace ( en gros je veux les effacer de la phrase ).
J'ai donc fait cette regexp mais elle ne filtre rien ... qq'un voit il mon erreur ?
 
Merci d'avance pour vos réponses


Message édité par ishaor le 12-07-2004 à 15:39:26
Reply

Marsh Posté le 09-07-2004 à 16:26:44   

Reply

Marsh Posté le 09-07-2004 à 21:30:46    

C'est koi exactement ce que tu veut virer dans ton exemple?
"%KeyList" et "%Reference" ?
 
la avec ton expression tu va supprimer tout ce qui commence par un %, ne contenant rien ou que des lettres (tu peux remplacer [A-Za-z] par \w et mettre le modfier i à la fin d'ailleurs), et finissant par un espace.
 
Et dans ton exemple il n'y a rien qui corresponde à ce motif

Reply

Marsh Posté le 10-07-2004 à 04:16:24    

s/%\w\s/ /g
 
non?


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 11-07-2004 à 23:00:47    

je veux effacer chaque mot qui commence par un %. Par exemple je veux effacer en entier %KeyList=[Port,Protocol,ServerName].
Je vais essayer vos solutions.
Merci de votre aide

Reply

Marsh Posté le 11-07-2004 à 23:02:45    

bon bin tu veux pas le remplacer par un espace
 
alors c'est plutot
 
$foo =~ s/^%\w=.*$//g;
 
ca l'espace les lignes qui débute par %trucmachin=


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 12-07-2004 à 00:06:24    

bon j'ai testé mais ca marche pas :(
comprends pas ... c'est pourtant tout con ce que je veux faire ...

Reply

Marsh Posté le 12-07-2004 à 10:31:20    

Un peu complexe
$text = s/%.*=\[.*\]/ /g
 
Plus simple, mais peut-être top simple pour que ça marche
$text = s/%.* / /g

Reply

Marsh Posté le 12-07-2004 à 15:38:43    

la bonne réponse était :  
$ligne =~ s/%\S*\s//g;
 
merci à tous.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed