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:
'mamma papa '
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
html y el espacio después test text 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.