Forum: Rails France Regexp

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
65586fff6c8503a86c642ee8c3310658?d=identicon&s=25 Zak Mad (abdoulzak)
on 2008-12-06 10:19
Bonjour,
Je tente de trouver une regexp qui matche la string suivante :

s = '[03/Nov/2008:13:21:15 +0100] 10.37.93.39
http://profile.ak.facebook.com/v225/1712/24/t77956...
"3362,287562259289457,18+=-,GPRS,0,wapsfr,0,0,,300,110000100000000000000000000000000,WAP2.0,95,0,10.37.93.39"
"-" TCP/200 HTTP/1.1 GET 60 0.060 - 1043 200 1802 266 200
"SEC-SGHE900/1.0 NetFront/3.2 Profile/MIDP-2.0 Configuration/CLDC-1.1"'

sachant que le séparateur de champ est le caratère vide 'espace' et
aussi que le premier et le 3ème champ peuvent contenir des espaces (pour
le premier c'est systématique).
Voici les regex que j'ai :

regex =
"^[(.*?)\]\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|-)\s([^\s]+)\s"([^,]+|-),[^,]*,[^,]*,([^,]+|-),[^,]*,([^,]+|-),[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,([^,]+|-),([^,]+|-),([^,]+|-),([^,]+|-)"\s"([^"]+)"\s(([^\s]+)/(\d+|-))\s([^\s]+|-)\s([^\s]+|-)\s(\d+|-)\s(\d+\.\d+|-)\s(\d+|-)\s(\d+|-)\s(\d+|-)\s(\d+|-)\s(\d+|-)\s(\d+|-)\s"(.+?)"\s*$"

qu'est ce que j'ai loupé?
Merci pour votre aide.
B796b2c796bba081a12f3931bb98e574?d=identicon&s=25 Bruno Michel (Guest)
on 2008-12-06 13:20
(Received via mailing list)
Zak Mad a écrit :
> aussi que le premier et le 3ème champ peuvent contenir des espaces (pour
> le premier c'est systématique).
> Voici les regex que j'ai :
>
> regex =
> 
"^[(.*?)\]\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|-)\s([^\s]+)\s"([^,]+|-),[^,]*,[^,]*,([^,]+|-),[^,]*,([^,]+|-),[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,([^,]+|-),([^,]+|-),([^,]+|-),([^,]+|-)"\s"([^"]+)"\s(([^\s]+)/(\d+|-))\s([^\s]+|-)\s([^\s]+|-)\s(\d+|-)\s(\d+\.\d+|-)\s(\d+|-)\s(\d+|-)\s(\d+|-)\s(\d+|-)\s(\d+|-)\s(\d+|-)\s"(.+?)"\s*$"
>
> qu'est ce que j'ai loupé?
> Merci pour votre aide.

Bonjour,

alors voici quelques conseils qui devraient t'aider à t'en sortir.

Tout d'abord, il est préférable d'écrire les regexps entre deux slashs
plutôt que des quotes (sinon, il faut doubler le nombre d'antislashs
pour protéger les caractères).

Ensuite, il faudrait protéger le [ au début de ta regexep avec un \.

Il faudrait également utiliser " à la place des ".

Enfin, si cela ne fonctionne toujours pas, je te conseille de jouer avec
http://www.rubular.com/ pour tester ta regexp.

++
Bruno

PS : regex =
/^\[(.*?)\]\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|-)\s([^\s]+)\s"([^,]+|-),[^,]*,[^,]*,([^,]+|-),[^,]*,([^,]+|-),[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,([^,]+|-),([^,]+|-),([^,]+|-),([^,]+|-)"\s"([^"]+)"\s(([^\s]+)/(\d+|-))\s([^\s]+|-)\s([^\s]+|-)\s(\d+|-)\s(\d+\.\d+|-)\s(\d+|-)\s(\d+|-)\s(\d+|-)\s(\d+|-)\s(\d+|-)\s(\d+|-)\s"(.+?)"\s*$/
devrait fonctionner.
B935c7953e0d4c30b82fdee575163e6a?d=identicon&s=25 Pierre Valade (Guest)
on 2008-12-06 16:32
(Received via mailing list)
Merci pour le lien !

2008/12/6 Bruno Michel <bmichel@menfin.info>
This topic is locked and can not be replied to.