Retourner aux forums || Retourner au forum Programmation.perl
Programmation.perl : Récupérer des captures multiples
Posté par Ontologia (page perso, ) le 27 avril 2007
0
Bonjour, je suis en train d'écrire un petit script m'aidant à générer de la docJ'ai ça :
- from_external p:NATIVE_ARRAY[CHARACTER] <-ça me rend :
//* Syntaxe,Header : := from_external_copy <p> J'ai écris pour cela le bête code :
#!/bin/perl
use strict;
my $res;
while (my $line = ) {
if ($line =~ /\s*-([\w\s_:,\[\]]+)<-/) {
# C'est une ligne de def de slot
$res = $1;
$res =~ s/([\w_]+)(\s*:[A-Z_\]\[]+)/<$1>/g;
print " //* Syntaxe,Header : := $res\n";
}
else {
print $line;
}
}
Je voudrai produire pour chacune des captures ([\w_]+) (de la ligne
$res =~ s/([\w_]+)(\s*:[A-Z_\]\[]+)/<$1>/g; )une ligne du genre
// <p> : NATIVE_ARRAY[CHARACTER] <Et qu'il me crache plusieurs lignes s'il y a plusieurs séquences.
Donc, en d'autres termes, comment, en perl, peut on récupérer, pour une regexp qui matche une capture en plusieurs endroit de la phrase, la liste des captures et boucler dessus ?
> Lire le message (1 commentaire, moyenne: 3).
regexp
Posté par
sylvain cresto (page perso, ) le 27/04/2007 à 12:20. (lien). Évalué à 3.
Je n'ai pas très bien compris ton exemple, donc suivant ce que tu veux faire (avec une expression réguliere tout simple), pour récupérer le résultat dans un array:
my $a="abc def ghf";
my @resultats = ($a =~ m/([\w_]+)/g);
foreach my $element (@resultats) {
print "un element=$element\n";
# ton traitement
}
Ou plus simplement pour l'utiliser directement dans une boucle:
my $a="abc def ghf";
foreach my $element ($a=~m/([\w_]+)/g) {
print "un element=$element\n";
# ton traitement
}
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.perl



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.