Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/04/2007, 12h41   #1
Membre éprouvé
 
Avatar de ilood
 
Inscription : mars 2005
Messages : 468
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 468
Points : 446
Points : 446
Par défaut Extraire les pseudo d'un log irc

Bonjour

J'aimerai extraire tous les pseudo d'un log irc.

Je lis ligne par ligne le fichier en essayant d'extraire le pseudo avec une regex
Code :
preg_match("/^.*\((\+?|@?.*)\)/",$str,$pseudo)
mais la capture se fait assez mal.

Par exemple pour ce style de phrase la capture se fait sur le (s) et non sur le pseudo
Citation:
[00:00] (+Lorem) Ipsum dolor sit amet, consectetuer adipiscing elit. Fusce(s) blandit.
Et lorsque la capture du pseudo se fait, j'ai le + ou le @ qui apparait alors que je ne le voudrais pas.

En vous remerciant
__________________
Qui aime bien, charrie bien
ilood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 13h22   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Il vous faut alors "déplacer" votre capture, comme ceci par exemple (non testé) pour le problème sur le pseudo :
Code :
1
2
 
preg_match("/\(\[+@]?(.*)\)/",$str,$pseudo);
L'ancre de début de ligne (^) n'est pas réellement utile dans votre cas car preg_match s'arrête à la première correspondance et c'est certainement la gourmandise de l'expression qui vous faisait trouver le s dans l'exemple donné.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2007, 13h55   #3
Membre éprouvé
 
Avatar de ilood
 
Inscription : mars 2005
Messages : 468
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 468
Points : 446
Points : 446
En corrigeant une petite coquille dans l'expression que vous m'avez fourni, il y a un mieux
Code :
preg_match("/\([+@]?(.*)\)/",$str,$pseudo);
Mais le problème persiste lorsque plusieurs parenthèses sont présentes dans la chaine, en effet avec l'exemple donné plus haut, la capture se fait sur cette expression
Citation:
Lorem) Ipsum dolor sit amet, consectetuer adipiscing elit. Fusce(s
__________________
Qui aime bien, charrie bien
ilood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2007, 16h36   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Dans la série gourde, il manquait l'option de non-gourmandise (j'en parlais avant en plus) ça a l'air d'être mieux avec :
Code :
preg_match("/\([+@]??(.*)\)/U",$str,$pseudo);
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2007, 23h57   #5
Membre éprouvé
 
Avatar de ilood
 
Inscription : mars 2005
Messages : 468
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 468
Points : 446
Points : 446
Par-fait ! Merci beaucoup julp
__________________
Qui aime bien, charrie bien
ilood est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h31.


 
 
 
 
Partenaires

Hébergement Web