Regex: coincide con el atributo en un código HTML [duplicate]

2 minutos de lectura

Avatar de usuario de Tony
tonio

Tengo un problema con la coincidencia de los atributos html. (en varias etiquetas html) con expresiones regulares. Para hacerlo, utilizo el patrón:

myAttr=\"([^']*)\"

Fragmento HTML:

<img alt="" src="https://stackoverflow.com/questions/7671925/1-p2.jpg" myAttr="http://example.com" class="alignleft" />

selecciona texto de la myAttr el fin /> pero necesito seleccionar el myAttr="..." (“http://ejemplo.com“)

Avatar de usuario de Ray Toal
rayo toal

Tienes un apóstrofo (') dentro de tu clase de personaje pero querías una cita (").

myAttr=\"([^"]*)\"

Dicho esto, realmente no debería analizar HTML con expresiones regulares. (Perdón por enlazar a eso responde de nuevo Hay otras respuestas a esa pregunta que son más del tipo “si sabes lo que estás haciendo…”. Pero es bueno tener en cuenta.)

Tenga en cuenta que incluso si limita su expresión regular a solo atributos, tiene mucho que considerar:

  • Tenga cuidado de no hacer coincidir el interior de los comentarios.
  • Tenga cuidado de no hacer coincidir el interior de las secciones de CDATA.
  • ¿Qué pasa si los atributos están entre corchetes con comillas simples en lugar de comillas dobles?
  • ¿Qué sucede si los atributos no tienen comillas?

Esta es la razón por la que generalmente se requieren analizadores serios y prediseñados.

  • si el valor del atributo contiene \”, esta expresión regular será incorrecta, como

    – xiaoyifang

    16 de abril de 2022 a las 7:18


  • Genial, ¡otra buena razón para no usar expresiones regulares aquí! Es completamente el enfoque equivocado.

    – Ray Toal

    17 abr 2022 a las 20:13

El * es un cuantificador codicioso. Debe seguirlo con un signo de interrogación para que no sea codicioso:

myAttr=\"([^']*?)\"

Avatar de usuario de Laurent
laurent’

Si solo quieres el parámetro myAttr valorutilizar esta:

"myAttr=\"([^\"]+)\""

puedes intentar usar eso

 myAttr=\"?[\w:\-]+ ?= ?("[^"]+"|'[^']+'|\w+)\"

Solo intente esta es esta ayuda para eliminar todas las etiquetas

ejemplo algo

  • ¿Leíste la pregunta?

    – Totó

    7 de marzo de 2017 a las 9:39

  • ¿Leíste la pregunta?

    – Totó

    7 de marzo de 2017 a las 9:39

¿Ha sido útil esta solución?