Newsgroup: it.comp.lang.perl
Titolo: espressione regolare

ciao a tutti,
ho un pezzo di codice html con diverse table infilate l'una nell'altra e
devo pescarne una in particolare (in fondo al post c'e' il codice html).
Avete qualche suggerimento ? Vi sarei grato mi deste dei suggerimenti
anziche' una riga di codice che gia' funziona cosi' poi ci posso provare
da solo...
grazie a tutti
NB: per essere piu' chiaro vorrei mettere le previsioni del tempo sul
mio sito pescandole da yahoo quindi...
Ecco il codice ---> ho segnato con un commento la table che devo
"pescare"
<table border=0 cellpadding=2 cellspacing=0 width="400">
<tr>
<td bgcolor="#ff9900" ><font face="arial" size=-1 ><b>Today</b></td>
<td valign=middle align=right bgcolor="#ff9900" ><a
href="/forecast/Verona_IY_f.html">F</a><b><font face=arial size
="-1">&#176;</big> or C<big>&#176;</big></font></b></td>
<td rowspan=3 width="2%"><br></td>
<td width="18%" align=center valign=middle bgcolor="#ffcc33">
<font size="-1"face="arial"><b>Fri</b>
</td>
<td rowspan=3 width="2%"><br></td>
<td width="18%" align=center valign=middle bgcolor="#ffcc33">
<font size="-1"face="arial"><b>Sat</b>
</td>
<td rowspan=3 width="2%"><br></td>
<td width="18%" align=center valign=middle bgcolor="#ffcc33">
<font size="-1"face="arial"><b>Sun</b>
</td>
<td rowspan=3 width="2%"><br></td>
<td width="18%" align=center valign=middle bgcolor="#ffcc33">
<font size="-1"face="arial"><b>Mon</b>
</td>
</tr>
<tr>
<td valign=top align=center bgcolor="#ffcc99" colspan=2>
<!-- QUI COMINCIA LA TABLE CHE MI SERVE -->
<table border=0 cellpadding=4 cellspacing=1 width="100"%
bgcolor="000000">
<tr>
<td align=center valign=middle rowspan=2 width="33%" bgcolor="#dcdcdc">
<img src="
http://us.yimg.com/i/we/fc/85.gif
" width="42
height="42"><br><br>
<font size="-2" face="arial">Sunny</font></td>
<td align=center valign=middle bgcolor="#6699ff" width="33%"><font
face="arial" size="+1"><small>Hi</small>&nbsp;<b>6&#176;</b></font></td>
</tr>
<tr>
<td align=center valign=middle bgcolor="#9966ff">
<font face="arial"
size="+1"><small>Lo</small><b>&nbsp;-1&#176;</b></font>
</td>
</tr>
</table>
<!-- QUI FINISCE LA TABLE-->
</td>
<td align=center valign=middle bgcolor="#dcdcdc">
<font size="-2" face="arial"><img
src="
http://us.yimg.com/i/we/fc/66.gif
" width="42
height="42"><br><br>Partly<br>Cloudy</font></td>
<td align=center valign=middle bgcolor="#dcdcdc">
<font size="-2" face="arial"><img
src="
http://us.yimg.com/i/we/fc/66.gif
" width="42
height="42"><br><br>Partly<br>Cloudy</font></td>
<td align=center valign=middle bgcolor="#dcdcdc">
<font size="-2" face="arial"><img
src="
http://us.yimg.com/i/we/fc/85.gif
" width="42
height="42"><br><br><br>Sunny</font></td>
<td align=center valign=middle bgcolor="#dcdcdc">
<font size="-2" face="arial"><img
src="
http://us.yimg.com/i/we/fc/85.gif
" width="42
height="42"><br><br><br>Sunny</font></td>
</tr>
<tr>
<td valign=top align=center colspan=2 bgcolor="#ffcc99">
<!--begin colorbar-->
<table border=0 cellpadding=2 cellspacing=0 >
<tr>
<td bgcolor="#ffffff" align=center valign=middle><font
size="-3">&#139;-10</font></td>
<td bgcolor="#cc99ff" align=center valign=middle><font
size="-3">-10</font></td>
<td bgcolor="#9966ff" align=center valign=middle><font
size="-3">-5</font></td>
<td bgcolor="#6666ff" align=center valign=middle><font
size="-3">0</font></td>
<td bgcolor="#6699ff" align=center valign=middle><font
size="-3">5</font></td>
<td bgcolor="#66cc99" align=center valign=middle><font
size="-3">10</font></td>
<td bgcolor="#ffff99" align=center valign=middle><font
size="-3">15</font></td>
<td bgcolor="#ffcc66" align=center valign=middle><font
size="-3">20</font></td>
<td bgcolor="#ff9900" align=center valign=middle><font
size="-3">25</font></td>
<td bgcolor="#ff6600" align=center valign=middle><font
size="-3">30</font></td>
<td bgcolor="#cc6600" align=center valign=middle><font
size="-3">35+</font></td>
</tr>
 </table>
 <!--end colorbar-->
<table cellpadding=0 cellspacing=1 border=0 align=center>
<tr><td>
</td></tr>
</table>
</td>
<td align=center valign=middle bgcolor="#dcdcdc">
<font size="-2" face="arial">Hi 5</font><br>
<font size="-2" face="arial">Lo 0</font></td>
<td align=center valign=middle bgcolor="#dcdcdc">
<font size="-2" face="arial">Hi 6</font><br>
<font size="-2" face="arial">Lo 0</font></td>
<td align=center valign=middle bgcolor="#dcdcdc">
<font size="-2" face="arial">Hi 11</font><br>
<font size="-2" face="arial">Lo -1</font></td>
<td align=center valign=middle bgcolor="#dcdcdc">
<font size="-2" face="arial">Hi 8</font><br>
<font size="-2" face="arial">Lo 3</font></td>
</tr>
<!--#exec cmd="/home/wni/docs/cgi/advert_static site-country:IT
ad-url:Verona_IY_c.html ad-location:SW"--><tr><td colspan=11
align=center><font size="-1" face=arial>Need the weather for next week?
Next month? Next year? Try </font><a
href="
http://rd.yahoo.com/M=44860.421334.2268216.310852/S=20078731:SW/A=193777/R=0/*http://www.weatherplanner.com/cgi-bin/wp.cgi?link=http://weather.yahoo.com/forecast/Verona_IY_c.html
"
target="_top"><b>weatherplanner</b></a>. </td></tr>
</table>

Questo e' il match che sto provando ma mi sembra di essere in alto mare...
$table =~ m[<table(.*)?<table(.*)?</table>]s;
per poi avere in $2 piu' o meno quello che mi interessa.... purtroppo nonostante il ? questa espressione e' un po' troppo "greedy"...
ri-ciao

 "pescare"
Non cito tutto il codice HTML, pero' il mio suggerimento e': "Lascia stare
le regexp per tirar fuori dati da un file HTML". O meglio, e' troppo
complicato e impredicibile per poterlo con una semplice espressione.
In una situazione del genere, io farei nel seguente modo:
1) Identificare un testo che SICURAMENTE mi permette di localizzare cio' che
   mi interessa. Nel tuo caso, la stringa "Verona", ad esempio.
 
2) Buttar via tutto quello che segue "Verona" (e anche quello prima, di
fatto), fino ad incontrare <table. Intendo tutte le righe, se il file e'
organizzato per righe.
 3a) Tenere tutto quello che sta tra "<table" e "</table>"
 4a) Buttar via tutto quello che c'e' dopo.
 
 Oppure
 
 3b) Tra "<table" e "</table", tenere solo in contenuto della tabella,
     eliminando i tag e i loro attributi, e poi usare solo il contenuto
     per ricostruire una nuova tabella tua.
 4b) Buttar via quello che c'e' dopo il primo </table>
Naturalmente il funzionamento dipende dal fatto che il file sia leggibile
per righe, che il formato non cambi e che ci sia del testo univocamente 
identificabile immediatamente prima della tabella che ti interessa.
Maurizio
-- 
Maurizio M. Munafo' / 
mmmu...@netscape.net
"Consider Phlebas, who was once handsome and tall as you" (T.S.Eliot)

 identificabile immediatamente prima della tabella che ti interessa.
effettivamente spero ardentemente che yahoo non decida di cambiare template ogni
giorno altrimenti impazzisco... ma conto sul fatto che siano degli
abitudinari...
ciao e grazie
Mattia
