Problème des expressions régulieres en PERL [Fermé]

Signaler
-
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
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

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
Salut,
#!/usr/bin/perl
use strict;use warnings;

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