perl regexp e gruppi $1,$2...$[n] [messaggio #41251] |
mer, 24 agosto 2011 18:49 |
bc Messaggi: 141 Registrato: aprile 2011 |
Senior Member |
|
|
Ho una funzione a cui passo una generica regex che non mi è nota a priori.
vorrei conoscere quante variabili $1...$[n] mi valorizza.
solo che non trovo come riferirmi all'indice di $ (immagino sia un
grosso buco nelle mie conoscenze di perl, ma non so che chiavi usare
per domandare la risposta a google)
Per spiegarmi ecco un prog di test
$rigadatestare e $regexpesempio devono considerarsi variabili
e a seconda della regexp caricata il numero di $1,2,3 può variare
-INIZIO SCRIPT PERL
#!/usr/bin/perl -w
my $rigadatestare=' @bookmark nomebookmark=[sezione] pippo pluto
paperino';
my $regexpesempio='^\s*\@bookmark\s+(\w*)\s*=\s*(.*)';
if ($rigadatestare =~ m/$regexpesempio/) {
print "prima di uguale :>>>$1<<<\n";
print "dopo uguale :>>>$2<<<\n";
# l'esempio sopra visto che conosco la regexp so che mi valorizza
# $1 e S2, ma per farlo pià generico volevo gestirlo con un ciclo.
# Ho trovato questo workaround che funziona. Il ciclo lo faccio
# attraverso $- che in risposta ad una regexp contiene la lista
# delle posizioni iniziali dei gruppi che verificano la regexp
# (AMMESSO CHE IO ABBIA CAPITO BENE). Sembra funzionare, in teoria
# anche se è riferito ad un altra cosa dovrebbe contenere il valore
#che mi serve
foreach $expr (1..$#-) {
print "Trovato $expr: >>>${$expr}<<<\n";
}
#Apparentemente il ciclo sotto funziona bene, ma preferirei ciclare
#sull'indice di $, non di $- (anche se magari sono uguali)
}
die "FINE";
-FINE SCRIPT PERL
PS.. Viene da un copia-incolla quindi dovrebbe girare.
|
|
|
|
Re: perl regexp e gruppi $1,$2...$[n] [messaggio #41261 è una risposta a message #41259] |
gio, 25 agosto 2011 10:59 |
bc Messaggi: 141 Registrato: aprile 2011 |
Senior Member |
|
|
Il 25/08/2011 01:38, M_M ha scritto:
> bc<none@none.none> ha scritto:
>
>> [CUT] (immagino sia un
>> grosso buco nelle mie conoscenze di perl, ma non so che chiavi usare
>> per domandare la risposta a google)
>
> Esiste anche it.comp.lang.perl
>
>
Ecco... Questo è un altro grosso buco nelle mie conoscenze perl
Il bello è che l'ho pure cercato passando oltre senza vederlo :-(
Ok, Grazie!
|
|
|