Problème des expressions régulieres en PERL

Fermé
ClemClem - 20 mai 2008 à 21:18
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 20 mai 2008 à 21:35
Bonjour,

Donc voila je dois faire un petit script en PERL pour verifier si les adresses mail qui sont en destinataire lors d'un envoie de mail, soit bien ceux du serveur de messagerie. Bon dur a comprendre, mais ce n'est pas le sujet ;)

Donc voila je vous presente un exempel de extrait de fichier mail

Mon, 19 May 2008 04:58:59 +0200 (CEST)N1Message-ID: <bansasdiazknf@lara>N.From: "Emetteur" <adresseemetteur@mail.fr>N%To: "destinataire" <adressedestinaitaire@mail.fr>NLSubject: sujet du mailN%Date: Sun, 18 May 2008 23:59:07 -0300NMIME-Version: 1.0N$Content-Type: multipart/alterna
<DIV align=3Dcenter><A href=3D=NJ"http://urldusite.com>IMG alt=N"=3D"On insulin" hspace=3D0 src=3D=NJ"http:/urldusite.com/y1pppmEy5N4_4eyWfQ6QeVtvEwOMZfFYEUCa=NJ55tXU9eEKB10dNkltg9uhd_U4e4WYKaA7VytPv6cdeDLDxpKTvXzLI7hy7sZOL0/skwuxnxv"=N' align=3Dbaseline border=3D0></A>


Et donc voila j'aimerai recuperer l'adresse du destinaitaire (en gras dans le fichier). Et pour cela j'ai fait avec une expression reguliere

while (<FENTFIC>){ #<FENTIC> est le nom de l'argument dans la fonction open

my $alfa=$_=~ /To: .*<(.*)>\w+/;
print $alfa."\n";
}


Après le To: J'utilise le .* car il peut avoir quelque chose ebntre gulletmet ou rien ou avec un espace entre les guillemets et ensuite je veut recupere la valeur entre les crochets donc c'est la que je met les parentheses, et je m'arrete au crochets suivant avec des mots derrieres.

Mais quand je le compile (par exemple avec ce fichier) il me retourne la derniere occurence avec u crochet, donc ici avec ce fichier il va me retourner "/A".

Donc voila c'est ici que je fais appel a vos competences car je n'ai pas reussis a trouver le probleme pendant tout l'apreès midi.

Merci d'avance, et pour plus d'information n'hesitez pas !!! :)

1 réponse

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
20 mai 2008 à 21:35
Salut,
#!/usr/bin/perl
use strict;use warnings;

while (<FENTIC>){
  next unless /To: .*<(.*)>\w+/;
  my $alfa = $1;
  print $alfa,"\n";
}
0