PDA

Visualizza la versione completa : [REGEX] Identificare tag HTML


bertuz
05-03-2011, 22:42
Ciao a tutti!
Sto studiando un po' le regex e ovviamente mi sorgono dubbi che da solo non riesco però a chiarire. Eccoveli in pasto :popcorn:

su questo testo:

<HTML><HEAD><TITLE>ESPRESSIONI REGOLARI</TITLE></HEAD><BODY></BODY></HTML>
cerco di confrontare la mia regex in modo che risulti vera.

Questa prima espressione:


<.+?>

risulta vera. Attenzione che già ho capito che la regex non si ferma alla prima chiusura di tag, ma fino all'ultima chiusura tutto ricade nel "." con ripetizione +.

Ho quindi pensato.. posso racchiudere tale punto, indicante un generico carattere, in una classe che faccia lo stesso lavoro? Ossia così


<[.]+?

La risposta, se l'espressione viene confrontata con il testo, dice NO. Però non capisco perché. E in caso come è possibile definire un generico carattere in una classe?

Grazie a tutti, buon fine settimana! :ciauz:

MItaly
05-03-2011, 23:05
[Parzialmente OT]Le RegEx non vanno usate sull'HTML, dato che l'HTML è un linguaggio di complessità superiore a ciò che le RegEx possono gestire. Il modo più corretto per effettuare il parsing dell'HTML è usare un parser scritto precisamente per tale fine.[/Parzialmente OT]

lolide
05-03-2011, 23:21
La prima regexp recupera "<HTML>" non va fino alla fine, perchè hai usato "+?" invece di "*".

La seconda non funziona invece, perchè il punto in una classe non viene visto come "qualsiasi carattere" ma come "segno di punteggiatura punto", quindi la tua regexp sarebbe uguale a "<\.*".

Loading