capture dans les expressions regulieres

Le
kurtz_le_pirate
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #22202681
"kurtz_le_pirate" wrote in message
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
Le #22203541
À (at) 02 Jun 2010 13:15:37 GMT,
Nicolas George
Un « truc », non. Une solution propre et qui marche, oui, évidemment.



J'approuve. ;-)

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;
}

($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 - Perl en français -
BOUDOU Joseph
Le #22203781
($nbpage) = /page_count="(.*)"/;



Plutôt :

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



Il me semble que c'est :

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

--
On va y arriver...
Nicolas George
Le #22203771
Paul Gaborit wrote in message
($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
Le #22204721
À (at) 02 Jun 2010 16:45:17 GMT,
Nicolas George
Paul Gaborit wrote in message
($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 - Perl en français -
Paul Gaborit
Le #22206891
À (at) Thu, 3 Jun 2010 11:12:19 +0200,
"kurtz_le_pirate"
ps:ça veut dire quoi 'PO' ? :))



Posteur original (ou initiateur de l'enfilade).

--
Paul Gaborit - Perl en français -
Publicité
Poster une réponse
Anonyme