Regex: Doppelte Anführungszeichen (Apostroph) in einem HTML-Tag löschen (aus Zeichenfolge)

Regex: Doppelte Anführungszeichen (Apostroph) in einem HTML-Tag löschen (aus Zeichenfolge)

Ich habe dieses HTML-Tag (aus Zeichenfolge):

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

Wie Sie sehen, habe ich 4 doppelte Anführungszeichen (Apostrophe) in derInhaltAbschnitt. Sollte nur 2 Anführungszeichen enthalten: eines am Anfang content="und eines am Ende"/>

Ich muss alle Tags finden, die andere Anführungszeichen enthalten, außer diesen beiden im Inhaltsabschnitt, und sie löschen:

Die Ausgabe sollte wie folgt aussehen:

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

Ich habe einen Regex erstellt, aber nicht besonders gut. Vielleicht kannst du mir helfen:

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

ERSETZEN DURCH:\1\2

Antwort1

So können Sie vorgehen:

  • Ctrl+H
  • Finde was:(?:<meta name="description" content="|\G(?!^))[^"]*\K"(?=.*?"/>)
  • Ersetzen mit:LEAVE EMPTY
  • ÜBERPRÜFEN Umwickeln
  • ÜBERPRÜFEN Regulären Ausdruck
  • DEAKTIVIEREN . matches newline
  • Replace all

Erläuterung:

(?:             # 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

Screenshot (vorher):

Bildbeschreibung hier eingeben

Screenshot (nachher):

Bildbeschreibung hier eingeben

Demo & Erklärung

verwandte Informationen