Discussion:
capture dans les expressions regulieres
(trop ancien pour répondre)
kurtz_le_pirate
2010-06-02 13:06:52 UTC
Permalink
bonjour,

j'ai une suite de regexp pour extraire des données.
je récupère mes valeurs grace aux regroupements.

par exemple :

$thisDatas =~ m/userName=\"(.*)\" domain/;
$user=$1;

$thisDatas =~ m/page_count=\"(.*)\"/;
$nbpage=$1;


le problème c'est que quand (dans cet exemple) le deuxième
test ne correspond pas, je récupère dans $nbpage, la valeur
du précédent soit $user. pour faire "simple", cet exemple
ne montre l'extraction que de deux valeurs. en realité,
beaucoup plus.

évidement, $1 est "read only" et ne peut être vidée.


voyez-vous un "truc" pour éviter ça ?


merci d'avance :)

--
klp
Nicolas George
2010-06-02 13:15:37 UTC
Permalink
"kurtz_le_pirate" wrote in message
Post by kurtz_le_pirate
voyez-vous un "truc" pour éviter ça ?
Un « truc », non. Une solution propre et qui marche, oui, évidemment. Au
choix : tester la valeur booléenne de l'opérateur de match ou l'utiliser en
contexte de liste.

if($data =~ /page_count="(.*)"/) {
$nbpage = $1;
}

($nbpage) = /page_count="(.*)"/;
Paul Gaborit
2010-06-02 15:41:48 UTC
Permalink
À (at) 02 Jun 2010 13:15:37 GMT,
Post by Nicolas George
Un « truc », non. Une solution propre et qui marche, oui, évidemment.
J'approuve. ;-)
Post by Nicolas George
Au choix : tester la valeur booléenne de l'opérateur de match ou
l'utiliser en contexte de liste.
if($data =~ /page_count="(.*)"/) {
$nbpage = $1;
}
Ok même si je trouve que c'est plus lisible avec le 'm' explicite :

if ($data =~ m/page_count="(.*)"/) {
$nbpage = $1;
}
Post by Nicolas George
($nbpage) = /page_count="(.*)"/;
Plutôt :

($nbpage) = ($nbpage =~ m/page_count="(.*)"/);

sinon la regexp s'applique à $_. La deuxième paire de parenthèses n'est
pas vraiment obligatoire (puisque =~ est prioritaire sur =) mais, là
encore, l'explicite est toujours plus clair.
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
BOUDOU Joseph
2010-06-02 16:33:16 UTC
Permalink
Post by Paul Gaborit
Post by Nicolas George
($nbpage) = /page_count="(.*)"/;
($nbpage) = ($nbpage =~ m/page_count="(.*)"/);
Il me semble que c'est :

($nbpage) = ( $thisDatas =~ m/page_count="(.*)"/ );
--
On va y arriver...
Nicolas George
2010-06-02 16:45:17 UTC
Permalink
Post by Paul Gaborit
($nbpage) = ($nbpage =~ m/page_count="(.*)"/);
sinon la regexp s'applique à $_.
Oui, au temps pour moi. Et le second est $data (ou l'horreur en camelCase
avec une faute d'anglais de l'exemple initial si on y tient), pas $nbpage,
bien sûr.
Paul Gaborit
2010-06-02 20:15:55 UTC
Permalink
À (at) 02 Jun 2010 16:45:17 GMT,
Post by Nicolas George
Post by Paul Gaborit
($nbpage) = ($nbpage =~ m/page_count="(.*)"/);
sinon la regexp s'applique à $_.
Oui, au temps pour moi. Et le second est $data (ou l'horreur en camelCase
avec une faute d'anglais de l'exemple initial si on y tient), pas $nbpage,
bien sûr.
Bon, finalement à trois on y arrive. Le PO fera le tri ! ;-)
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
kurtz_le_pirate
2010-06-03 09:12:19 UTC
Permalink
Post by Paul Gaborit
À (at) 02 Jun 2010 16:45:17 GMT,
Post by Nicolas George
Post by Paul Gaborit
($nbpage) = ($nbpage =~ m/page_count="(.*)"/);
sinon la regexp s'applique à $_.
Oui, au temps pour moi. Et le second est $data (ou l'horreur en camelCase
avec une faute d'anglais de l'exemple initial si on y tient), pas $nbpage,
bien sûr.
Bon, finalement à trois on y arrive. Le PO fera le tri ! ;-)
oui, merci à tous...



ps:ça veut dire quoi 'PO' ? :))

--
klp
Paul Gaborit
2010-06-03 11:53:14 UTC
Permalink
À (at) Thu, 3 Jun 2010 11:12:19 +0200,
Post by kurtz_le_pirate
ps:ça veut dire quoi 'PO' ? :))
Posteur original (ou initiateur de l'enfilade).
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Loading...