Regex: eliminar comillas dobles duplicadas (apóstrofo) en una etiqueta html (de una cadena)

Regex: eliminar comillas dobles duplicadas (apóstrofo) en una etiqueta html (de una cadena)

Tengo esta etiqueta html (de cadena):

<meta name="description" content="I love my mother" but I love my sister" more than I can say"/>

Como puede ver, tengo 4 comillas dobles (apóstrofo) en elcontenidosección. Deben tener solo 2 comillas dobles: una al principio content="y otra al final."/>

Debo encontrar todas las etiquetas que contengan otras comillas dobles excepto esas 2 en la sección de contenido y eliminarlas:

La salida debe ser:

<meta name="description" content="I love my mother but I love my sister more than I can say"/>

Hice una expresión regular, pero no demasiado buena. Quizás podrías ayudarme:

ENCONTRAR:(?-s)(<meta name="description" content=")(*?\K.*"(?s))"/>

SUSTITUIR POR:\1\2

Respuesta1

He aquí un camino a seguir:

  • Ctrl+H
  • Encontrar que:(?:<meta name="description" content="|\G(?!^))[^"]*\K"(?=.*?"/>)
  • Reemplazar con:LEAVE EMPTY
  • CONTROLAR Envolver alrededor
  • CONTROLAR Expresión regular
  • DESMARCAR . matches newline
  • Replace all

Explicación:

(?:             # non capture group
  <meta name="description" content="      # literally
 |               # OR
  \G(?!^)         # restart from last match position (not at the beginning of a line)
)               # end group
[^"]*           # 0 or more non quote
\K              # forget all we have seen until this position
"               # a double quote
(?=.*?"/>)      # positive lookahead, make sure we have "/>  somewhere after

Captura de pantalla (antes):

ingrese la descripción de la imagen aquí

Captura de pantalla (después):

ingrese la descripción de la imagen aquí

Demostración y explicación

información relacionada