2009/5/15 Ze lo <[email protected]>

>
> Bonjour à tous
> Je travail actuellement sur une application ror et j'ai un petit souci
> j'ai une variable qui contient le code html de ma page et je souhaiterai
> récupérer ce qu'il se trouve entre <body> et </body>
> J'ai donc voulu utiliser une regex :
> BODY_PATTERN = /<body.*<\/body>/m
> ...
> h = BODY_PATTERN.match(h)[0]
>
> me renvoi une erreur undefined method `[]' for nil:NilClass
>
> pourtant en affichant h juste avant, j'ai bien un <body> et </body>
> PS: J'ai l'impression que ceci fonctionnerai si tout le code html était
> sur une seul ligne car j'ai lu sur un autre forum et avec un autre
> langage que le caractère saut de ligne n'est pas reconnu dans "."



Oui, ton impression est correct. Tu a besoin de multiple-ligne regexen, et u
utilise /m aussi. Ça c'est bien et ça marche pour moi.
J'avais mis les la parenthèses ici et j'avais changé l'index. ([0] est le
resultat complet: http://www.ruby-doc.org/core/classes/MatchData.html

body = "<body>test \nheh</body>"
BODY_PATTERN = /<body>(.*)<\/body>/m
puts BODY_PATTERN.match(body)[1]


Output:

1
2

  test
heh



Essayez de changer cela avec vos données réelles.
http://codepad.org/6UsVTgZO

--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]
-~----------~----~----~----~------~----~------~--~---

Répondre à