visual quick online matches c# regex

c# - online - regex quick reference



RegEx haciendo coincidir etiquetas HTML y extrayendo texto (5)

Tengo una cadena de pruebas como esta:

<customtag>hey</customtag>

Quiero usar un RegEx para modificar el texto entre las etiquetas "customtag" para que se vea así:

<customtag>hey, this is changed!</customtag>

Sé que puedo usar un MatchEvaluator para modificar el texto, pero no estoy seguro de la sintaxis de RegEx adecuada para usar. Cualquier ayuda sería muy apreciada.


No usaría expresiones regulares tampoco para esto, pero si debe esta expresión debería funcionar: <customtag>(.+?)</customtag>


Si no hay otras etiquetas entre las dos etiquetas, esta expresión regular es un poco más segura y más eficiente:

<customtag>[^<>]*</customtag>


Me mordía la pierna antes de usar una expresión regular para analizar y alterar HTML.

Use XSL o DOM .

Dos comentarios me han pedido aclarar. La sustitución de expresiones regulares funciona en el caso específico en la pregunta del OP, pero en general las expresiones regulares no son una buena solución. Las expresiones regulares pueden coincidir con los lenguajes regulares , es decir, una secuencia de entrada que puede ser aceptada por una máquina de estados finitos. HTML puede contener etiquetas anidadas a cualquier profundidad arbitraria, por lo que no es un lenguaje normal.

¿Qué tiene esto que ver con la pregunta? Usar una expresión regular para la pregunta del OP como está escrito funciona, pero ¿qué <customtag> si el contenido entre las etiquetas <customtag> contiene otras etiquetas? ¿Qué ocurre si aparece un carácter < literal en el texto? Han pasado 11 meses desde que Jon Tackabury hizo la pregunta, y supongo que en ese momento, la complejidad de su problema puede haber aumentado.

Las expresiones regulares son excelentes herramientas y las uso todo el tiempo. Pero usarlos en lugar de un analizador real para la información que necesita uno va a funcionar solo en casos muy simples. Es prácticamente inevitable que estos casos crezcan más allá de lo que las expresiones regulares pueden manejar. Cuando eso sucede, tendrá la tentación de escribir una expresión regular más compleja, pero estos rápidamente se vuelven muy laboriosos para desarrollar y depurar. Prepárese para eliminar la solución de expresión regular cuando se amplíen los requisitos de análisis.

XSL y DOM son dos tecnologías estándar diseñadas para trabajar con marcado XML o XHTML. Ambas tecnologías saben cómo analizar archivos de marcado estructurados, hacer un seguimiento de las etiquetas anidadas y le permiten transformar los atributos o el contenido de las etiquetas.

Aquí hay un par de artículos sobre cómo usar XSL con C #:

Aquí hay un par de artículos sobre cómo usar DOM con C #:

Aquí hay una biblioteca .NET que ayuda a las operaciones DOM y XSL en HTML:



//This is to replace all HTML Text var re = new RegExp("<[^>]*>", "g"); var x2 = Content.replace(re,""); //This is to replace all &nbsp; var x3 = x2.replace(//u00a0/g,'''');