Expresiones regulares

Sergi Faber sfaber en fecemd.org
Mie Ene 14 09:11:14 CET 2004


Hola,

Estoy atascado con las expresiones regulares. Estoy empezando a aprender su manejo pero hay un tema concreto en el que no veo la luz. Me interesa extraer todo el texto entre tags de un fichero HTML, pero conservando algunos relativos a la presentación como '<b>', '</b>', '<i>', '</i>', '<cite>', etc. Por ejemplo, si tenemos:

'<p><b>hoy</b> pareces <i>triste</i></p>'
 
Necesito recuperar:

'<b>hoy</b> pareces <i>triste</i>'

Por ahora he intentado algo parecido a esta función:

def processa(regexp):
    for file in glob.glob('*.html' ):
    f=open(file)
    f1=f.read()
    f.close()
    f1=" ".join(f1.split())
    L1=re.split(regexp,f1)
    [...]

Con: 

processa('<.*?>')

recupero en la lista todo el texto, pero no me conserva los tags citados anteriormente:

L1: [..., 'hoy', ' pareces ', 'triste', ...]

Si pongo, por probar algo:

processa('<[^biu]*?>')

L1: [...,'<b>hoy</b> pareces <i>triste</i>',...]

Parece funcionar mejor, pero recupera también otros tags que no interesan como '<title>Prueba</title>' y otros que también contienen la "b" o la "i" por ejemplo.

¿Hay alguna manera de indicarle que trocee, excepto cuando encuentre los tags que le indico? Y ya de paso ¿Se puede indicar en una expresión regular que recupere TODO un texto menos determinadas palabras? Con [^ab] le indico que no recupere la 'a' o la 'b' y lo mismo para una secuencia determinada, pero ¿cómo le indico que no recupere 'gato' o 'liebre', por ejemplo?

Bueno, disculpad la extensión. Ya se que no es una pregunta específica de Python y que igual es una simpleza, pero una ayuda me vendría genial.

Gracias,

-- 
Sergi Faber
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es