Plop all,

Je fais actuellement mon programme "parseur de log".

Il ne me reste plus qu'à optimiser mes expressions régulières.

Deux formats d'expression : Apache et IIS

Voici un exemple de log pour ces deux formats :

Apache
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
192.90.90.90 - - [10/Aug/2009:19:45:42 +0100] "GET /index.php HTTP/1.1" 100 200 "http://www.developpez.com" "Mozilla/4.0 (compatible; MSIE 7.0; Windows)"
IIS
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
2008-01-05 10:10:10 192.90.90.91 - GET /index.php 200 133 - Mozilla /4.0 (compatible; MSIE 7.0; Windows) http://www.developpez.com/
J'ai actuellement un problèmes sur mes expressions que voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
my $APACHE  = q{(\S+)\s+\S+\s+\S+\s+\[(\d+)/(\D+)/(\d+):\d+:\d+:\d+\s+\+\d+\]\s+\"(\S+)\s+(\S+)\s+\"\s+(\S+)\s+(\S+)\s+\"(.*)\"\s+\"(.*)\"};
my $IIS = q{(\d+)-(\d+)-(\d+)\s+\d+:\d+:\d+\s+(\S+)\s+\S+\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+\S+\s+(\S+)\s+(\S+)};
Premier problème, je crois qu'il doit y avoir une erreur dans la ligne apache et je ne vois pas ou.

Au niveau de le ligne IIS, je ne vois pas comment récupérer Mozilla /4.0 (compatible; MSIE 7.0; Windows) et http://www.developpez.com/ sachant qu'il n'y a pas de quote ici et qu'il y a plusieurs espaces dans le user agent (Mozilla 4.0 etc...).

Avez-vous une idée comment procéder ?

Je pense que je vais devoir me servir de ^http mais cela aurait pu être www.

Merci à vous