PDA

Visualizza la versione completa : [PERL]Come far andare il controllo di una regex oltre il primo risultato


vincy6
25-06-2009, 20:00
Ciao ho una regex che durante il suo controllo non deve fermarsi al primo risulato che fa match.
es:
la regex cerca il nome laura.
laura va a spasso con il suo cane di nome laura.
la regex trovera la prima e basta.Alla seconda non ci arriva prp
come fare?

Francis87
25-06-2009, 22:23
regexp in che linguaggio?

vincy6
26-06-2009, 10:13
il linguaggio e perl.
vi speigo meglio la situazione:
Io ho un codice html di una pagina.
a me mi servono i dati inseriti in questa pagina.
es:
html=
<span>Dato 1</span>
<span>Dato 2</span>
<span>Dato 3</span>

ora a me serve prendere Dato 1 , Dato2 , Dato3.
Se io metto 3 if cosi



if($html= m/<span>+/){
if($'= m/<\/span>+/){
$result1="`";
}
}
if($html= m/<span>+/){
if($'= m/<\/span>+/){
$result2="`";
}
}
if($html= m/<span>+/){
if($'= m/<\/span>+/){
$result3="`";
}
}


tutte e 3 le match si risolvono pero ogni if si fermera al primo <span> e basta.
come far cercare piu volte?

LeleFT
26-06-2009, 10:18
Il linguaggio va indicato nel titolo (RegEx non propriamente un "linguaggio di programmazione", mentre lo PERL). Inoltre, il codice va postato utilizzando i tag CODE (vedi Regolamento, punto 6, per i dettagli).

Oltretutto, PERL ha un forum dedicato: CGI e Perl.

Correggo il post con il codice, aggiungo il linguaggio nel titolo e sposto nel forum giusto.


Ciao. :ciauz:

Francis87
26-06-2009, 18:07
Guarda "Global matching" su http://perldoc.perl.org/perlretut.html

vincy6
26-06-2009, 18:08
ok provo
pero a me e un ciclo di if se vuoi ti posto il codice?

vincy6
26-06-2009, 18:14
if($stringa=~ m/<div\sclass="red"+\s+style="padding-top:+\s10px;">/)
{
if($'=~ m/<\/div>+/)
{
if($`=~ m/testo+\s+di+\s+prova+/)
{
$a_s="$` Angolo di strada\n";
print $a_s;
}
}
}


in poche parole a me serve quello che sta dopo di <div\sclass="red"+\s+style="padding-top:+\s10px;">/
ma prima di Testo prova ed e un numero.
mettiamo che la stringa e :


<div class="red" style="padding-top: 10px;">hai 3385 che scrivere(non mi serve)</div><div class="red" style="padding-top: 10px;">hai 3385 testo di prova</div>

a me serve 3385.
Pero fai conto che ci sono tante di questi codici con "testo di prova" diverso.
visto che l'if all'inizio e piu generale riguarda anche la seconda a me serve che controlli in tutta la stringa e provi con tutti irisultati trovati a passare il secondo e terzo if...
capito?
spero di si io e l'italiano facciamo fatica a convivere.

Loading