Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

capture dans les expressions regulieres

6 réponses
Avatar
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

6 réponses

Avatar
Nicolas George
"kurtz_le_pirate" wrote in message
<4c06576c$0$13290$:
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="(.*)"/;
Avatar
Paul Gaborit
À (at) 02 Jun 2010 13:15:37 GMT,
Nicolas George <nicolas$ écrivait (wrote):

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 - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
BOUDOU Joseph
($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...
Avatar
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.
Avatar
Paul Gaborit
À (at) 02 Jun 2010 16:45:17 GMT,
Nicolas George <nicolas$ écrivait (wrote):

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 - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
Paul Gaborit
À (at) Thu, 3 Jun 2010 11:12:19 +0200,
"kurtz_le_pirate" écrivait (wrote):

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/>