2011-05-03 23 views
7

Estoy buscando una forma de usar expresiones regulares para eliminar todas las etiquetas html de una cadena.
Así que si tengo <HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML> Me gustaría obtener el hello de él.regexp para etiquetas html con Matlab

Sé que probablemente se verá como etiquetas anidadas, pero no es realmente así, porque todo lo que quiero hacer aquí es eliminar cualquier cosa entre dos <>.

Estoy usando Matlab para hacerlo, pero la expresión regular es exactamente la misma, así que no dude en aportar cualquier ayuda.
Gracias.

Respuesta

10

Mi solución es:

>> str='<HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>'; 
>> regexprep(str, '<.*?>','') 

ans = 

Hello 
+0

fantástico, gracias! –

3

Es ampliamente aceptado que el uso de expresiones regulares para analizar HTML general es de mala educación. Si su html es mucho más complicado que el ejemplo dado, entonces debe usar un analizador XML en su lugar.

Más discusión en esta famosa pregunta SO. RegEx match open tags except XHTML self-contained tags.

Si desea analizar el contenido correctamente, a continuación, descargar xml_io_tools y utilizar

doc = xml_read('test.html') 
doc.b.FONT.CONTENT 

Si desea seguir con expresiones regulares, a continuación, utilizar la respuesta de Ilya, pero con una de las expresiones regulares de la respuesta ligado, por ejemplo ,

str = '<HTML><b><FONT color="red" size="3">Hello</FONT></b></HTML>'; 
rx = '<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>'; 
regexprep(str, rx, '') 
1

Ya que menciona que desea extraer "hola" en el archivo hTML anterior (por ejemplo filename.html), puede utilizar el siguiente en MATLAB:

doc = xmlread ('filename.html'); content = doc.item (0) .getTextContent

Espero que esto ayude!