Saltar al contenido

Expresión regular para eliminar etiquetas HTML

Benjamín, miembro de nuestro staff, nos ha hecho el favor de escribir esta reseña ya que domina a la perfección este tema.

Solución:

El uso de una expresión regular para analizar HTML está lleno de trampas. HTML no es un lenguaje normal y, por lo tanto, no se puede analizar correctamente al 100 % con una expresión regular. Este es solo uno de los muchos problemas con los que te encontrarás. El mejor enfoque es usar un analizador HTML/XML para que haga esto por usted.

Aquí hay un enlace a una publicación de blog que escribí hace un tiempo que brinda más detalles sobre este problema.

  • http://blogs.msdn.com/b/jaredpar/archive/2008/10/15/regular-expression-limitations.aspx

Dicho esto, aquí hay una solución que debería solucionar este problema en particular. Sin embargo, de ninguna manera es una solución perfecta.

var pattern = @"<(img|a)[^>]*>(?[^<]*)<";
var regex = new Regex(pattern);
var m = regex.Match(sSummary);
if ( m.Success ) { 
  sResult = m.Groups["content"].Value;

Para convertir esto:

'mammapapa'

dentro de esto:

'mamma papa'

Necesitas reemplazar las etiquetas con espacios:

.replace(/<[^>]*>/g, ' ')

y reduce los espacios duplicados a espacios individuales:

.replace(/s2,/g, ' ')

luego recorte los espacios iniciales y finales con:

.trim();

Lo que significa que su función de eliminación de etiquetas se ve así:

function removeTags(string)
  return string.replace(/<[^>]*>/g, ' ')
               .replace(/s2,/g, ' ')
               .trim();

Para eliminar también los espacios entre las etiquetas, puede usar el siguiente método, una combinación entre expresiones regulares y un recorte para los espacios al principio y al final del html de entrada:

    public static string StripHtml(string inputHTML)
    <[^>]+>";
        inputHTML = WebUtility.HtmlDecode(inputHTML).Trim();

        string noHTML = Regex.Replace(inputHTML, HTML_MARKUP_REGEX_PATTERN, string.Empty);

        return noHTML;
    

Entonces, para la siguiente entrada:

      

test text

test 1

test 2

test 3

La salida será solo el texto sin espacios entre las etiquetas html o el espacio antes o después de html: " texto de prueba prueba 1 prueba 2 prueba 3 ".

Tenga en cuenta que los espacios antes test text son de la test text html y el espacio después test 3 es de la test 3

html

Calificaciones y reseñas

Al final de la web puedes encontrar las críticas de otros sys admins, tú asimismo tienes la libertad de mostrar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *