[Python] Una dritta sulle espressioni regolari

Nicola Larosa nico a teknico.net
Mar 31 Maggio 2011 18:33:46 CEST


Cesco wrote:
> Ciao, scusate se vi rompo le scatole... qualcuno di voi ha
> dimestichezza con le espressioni regolari?
> Ho del codice HTML e dovrei cercare il contenuto dell'attributo
> "name" all'interno di un tag <input> o di un tag <select>

Non usare le regexp per parsare markup dipendente dal contesto, non sono
lo strumento migliore.


> Per caso conoscete un modo per specificare in un espressione regolare
> che cerco del testo che venga preceduto da un certo pattern e che
> venga fatto seguire da un'altro pattern *MA CHE NON CONTENGA* il
> pattern ricercato?

Si può fare, ma ti esporresti ad una serie di casi limite che non
sarebbero gestiti correttamente.


> P.S.: Purtroppo non posso convertire il codice HTML in XML, poichè
> devo fare questo lavoro con la clipboard e selezionando il codice
> HTML non sempre mi arriva ben formattato (es: può arrivarmi una cosa
> del tipo "ciao a <strong>Tutti qua..." in cui non c'è il tag </strong>
> di chiusura, per cui per l'XML viene giustamente considerato
> invalido)

Esistono appositi parser per l'HTML malformato. Quello più conosciuto è
BeautifulSoup, ma non usarlo, è lento e poco manutenuto.

Ti conviene usare lxml.html: <http://lxml.de/lxmlhtml.html>,
<http://pypi.python.org/pypi/lxml/2.3>.

-- 
Nicola Larosa - http://www.teknico.net/



Maggiori informazioni sulla lista Python