[Python] Una dritta sulle espressioni regolari

Cesco dev a cesco.it
Mar 31 Maggio 2011 18:10:39 CEST


 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>

 Ad esempio:
 ... testo ... <input name="pippo" value="pluto" /> ...
 Io ho bisogno di ottenere: pippo

 Finora per ottenere questo obbiettivo ho scritto una funzione che 
 sostanzialmente fa questo:

 1) Cerco tutti i tag <input> e <select>   ( 
 <input\b[^>]*>(.*?)|<select\b[^>]*>(.*?)</select> )

 2) In ogni tag trovato cerco la presenza della stringa << 
 name="QUALCOSA" >>   ( name=\".[?:\"]+ )

 3) Nella stringa trovata cerco la presenza dei doppi apici   ( \".+\" )

 4) Tolgo i doppi apici e finalmente ottengo il contenuto del tag name


 E funzionerebbe anche, solo che mi sembrano tanti passaggi e sospetto 
 che se conoscessi un po meglio le espressioni regolari magari la cosa si 
 potrebbe fare con una sola ricerca ben assestata... 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?


 Se riusciste ad aiutarmi ve ne sarei davvero grato.
 Grazie mille per il vostro tempo!


 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)


Maggiori informazioni sulla lista Python