test tag regular online for exprreg creator html regex

tag - Expresión regular para eliminar etiquetas HTML de una cadena



regular expression creator online (3)

Posible duplicado:
Expresión regular para eliminar etiquetas HTML

¿Hay alguna expresión que obtenga el valor entre dos etiquetas HTML?

Dado este:

<td class="played">0</td>

Estoy buscando una expresión que devolverá 0 , eliminando las etiquetas <td> .


No debe intentar analizar HTML con expresiones regulares. HTML no es un lenguaje común, por lo que cualquier expresión regular que se te ocurra probablemente fallará en algún caso de borde esotérico. Por favor refiérase a la respuesta seminal a esta pregunta para detalles. Si bien en su mayoría está formateado como una broma, tiene un muy buen punto.

Los siguientes ejemplos son Java, pero la expresión regular será similar, si no idéntica, para otros idiomas.

String target = someString.replaceAll("<[^>]*>", "");

Asumiendo que su no-html no contiene ningún <o> y que su cadena de entrada está estructurada correctamente.

Si sabes que son una etiqueta específica, por ejemplo, sabes que el texto contiene solo etiquetas <td> , podrías hacer algo como esto:

String target = someString.replaceAll("(?i)<td[^>]*>", "");

Editar: Ωmega sacó a relucir un buen punto en un comentario de otra publicación, que esto daría como resultado múltiples resultados, todos aplastados si hubiera varias etiquetas.

Por ejemplo, si la cadena de entrada fuera <td>Something</td><td>Another Thing</td> , entonces lo anterior daría como resultado SomethingAnother Thing .

En una situación en la que se esperan varias etiquetas, podríamos hacer algo como:

String target = someString.replaceAll("(?i)<td[^>]*>", " ").replaceAll("//s+", " ").trim();

Esto reemplaza el HTML con un solo espacio, luego colapsa el espacio en blanco y luego recorta cualquiera en los extremos.


Puedes hacerlo con jsoup http://jsoup.org/

Whitelist whitelist = Whitelist.none(); String cleanStr = Jsoup.clean(yourText, whitelist);


Un enfoque trivial sería reemplazar

<[^>]*>

sin nada. Pero dependiendo de qué tan mal estructurado esté tu opinión, eso puede fallar.