Newsgroup: it.comp.lang.perl
Titolo: Perchè questa reg expr non funziona ?

Salve,
ho la necessità di rimuovere i tag HTML contenuti una stringa e lasciare il resto. Ho provato così:
$pippo ='<img border=0 height=12 width=3 src="/tdb/little_bar.gif">pippo</td>0.12<td align=right>';
$pippo=~s/<[0-9a-zA-Z]>+//;
print $pippo;
ma non funziona, eppure [0-9a-zA-Z] indica numeri e lettere anche maiuscole, il + indica se trova
il pattern 1 o più volte allora perchè non va ?
Grazie delle risposte,

 wrote in message
news:aojssq$n89rq$1...@ID-154800.news.dfncis.de...



   Il tuo pattern cerca, ed eventualmente sostituisce, la parentesi 
angolare aperta, un carattere alfanumerico (e gli spazi? e gli apici? e 
gli "uguali"? e le barre?) ed una o piu` parentesi angolari chiuse. 
Manca qualsiasi forma di raccoglimento delle espressioni 
(parentesizzazione). Non puo`, ovviamente, funzionare, ed adesso lo 
capisci anche tu.
   Pensa, invece, a come e` effettivamente strutturato un tag HTML e 
costruisci contemporaneamente il pattern: inizia con una parentesi 
angolare aperta ('<'), contiene caratteri di quasi ogni tipo TRANNE una 
partentesi angolare chiusa ('>'), che ne determina la fine, sicche`:
	$pippo=~s/(<[^>]+>)//g;
-- 
Alla prossima,
Marco

Trovata:
http://www.perldoc.com/perl5.6/pod/perlfaq9.html#How-do-I-remove-HTML-from-a-string-
La reg exp è: s/<(?:[^>'"]*|(['"]).*?\1)*>//gs;
Acc, ma perchè sono peggio dell'arabo queste reg exp !!
Giuseppe


(parentesizzazione).
Vabbe', ma se vuole solo cancellare tutto, che cosa se ne fa delle
parentesi?.
Comunque, se appena appena il compito da eseguire è un po' più complesso,
ci sono moduli e moduli per trattare file HTML.
Ciao.


Ma tu sei di quelli che, quando spazzano, buttano tutto sotto il tappeto?
A parte che il prefisso standard per la firma è "-- ", non "--"....
Ciao.

 ci sono moduli e moduli per trattare file HTML.
   Indubbiamente.
-- 
Alla prossima,
Marco

tag HTML.
In realtà, non cacella quasi niente: cancella cose che, all'interno di un
documento HTML hanno discrete probabilità di essere tag HTML, come:
"<a>","<p>"... e cose che, all'interno di un documento HTML, non dovrebbero
probabilmente esserci, come: "<5>", "<a>>", e probabilmente qualche altra
cosina; il difetto più grave, però, è che NON cancella un sacco di roba che
dovrebbe invece cancellare.
Qualunque soluzione che abbia la pretesa di risolvere tutto in una sola
espressione regolare è in ogni caso destinata a fallire in qualche caso un
po' complesso (per esempio, quella da te proposta non interpreta
correttamente il seguente tag: <IMG SRC = "foo.gif" ALT = "A > B">). Questo
non vuol dire che non possano essere soluzioni legittime anche queste, in
casi particolari, ma solo che non sono molto robuste nel caso generale.
Quello che volevo dire, comunque, è che scrivere:
	$pippo=~s/(<[^>]+>)//g;
ha senso se pensi di utilizzare poi da qualche parte $1 (il tag trovato, in
questo caso). Altrimenti, tanto vale che fai:
	$pippo=~s/<[^>]+>//g;
Con un po' di fortuna te la cavi anche prima, ma soprattutto il codice è
più chiaro.
Ciao.

 Ciao.

 piů chiaro.
   Si`, infatti mi sono fatto prendere la mano dalle parentesi... ;)
-- 
Alla prossima,
Marco

 cosi`.
Non č cosě neanche per l'XML, mi sembra.
 
http://www.w3.org/TR/REC-xml#syntax
    AttValue    ::=   '"' ([^<&"] | Reference)* '"'
                      | "'" ([^<&'] | Reference)* "'"
Max

O il commento non è indirizzato a me?
Il commento è indirizzato a te: sto cercando di farti capire da un paio di
messaggi che preferirei che cancellassi tutti residui inutilizzati del
messaggio a cui rispondi, invece di lasciarli in fondo dopo la firma. Forse
tu con OE non li vedi neppure, non so. Io li vedo (magari Agent avrà anche
l'opzione per non far vedere la firma, ma non ho voglia di cercarla); e in
ogni caso è tutta roba inutile che spreca banda e basta.
Non che mi formalizzi più che tanto se proprio proprio non ce la fai, però
un pochetto, francamente, mi disturba (per un effetto di "rumore ottico",
più che per considerazioni di banda, netichetta o altro).
Ciao.

 più che per considerazioni di banda, netichetta o altro).
Anche a me disturba abbastanza, e di solito tolgo tutto quello che non
serve... quando mi ricordo, almeno :-)
A volte mi scappa il send prima di cancellare le cianfrusaglie. Chiedo
venia... prometto di non farlo più (o almeno tentare di non farlo più :-) )
ciao
--


 wrote in message
news:u19rqus22gm098t1h...@4ax.com...


-.. . -- .. -.-. .... . .-.. .. ... 
Questo pare abbia tenuto. Comunque, se ci tieni (diversi news reader si
accontentano anche dei soli due trattini, per discriminare la firma; non è
giusto, ma così va il mondo), ti conviene fare una ricerca in google.
L'argomento, compresa ogni possibile soluzione, è stato senz'altro trattato
ad nauseam su gruppi quali it.comp.software.newsreader,
it.comp.software.mailreader e simili.
Ciao.