Регулярное выражение: удалить дубликаты двойных кавычек (апостроф) в теге HTML (из строки)

Регулярное выражение: удалить дубликаты двойных кавычек (апостроф) в теге HTML (из строки)

У меня есть этот html-тег (из строки):

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

Как вы видите, у меня в строке 4 двойных кавычки (апостроф).содержаниераздел. Должно быть только 2 двойные кавычки: одна в начале content="и одна в конце"/>

Мне нужно найти все теги, содержащие другие двойные кавычки, за исключением тех двух, что находятся в разделе контента, и удалить их:

Вывод должен быть:

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

Я сделал Regex, но не очень хорошо. Может быть, вы сможете мне помочь:

НАХОДИТЬ:(?-s)(<meta name="description" content=")(*?\K.*"(?s))"/>

ЗАМЕНИТЬ НА:\1\2

решение1

Вот как это сделать:

  • Ctrl+H
  • Найти то, что:(?:<meta name="description" content="|\G(?!^))[^"]*\K"(?=.*?"/>)
  • Заменить:LEAVE EMPTY
  • ПРОВЕРЯТЬ Обернуть вокруг
  • ПРОВЕРЯТЬ Регулярное выражение
  • СНЯТЬ ОТМЕТКУ . matches newline
  • Replace all

Объяснение:

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

Скриншот (до):

введите описание изображения здесь

Скриншот (после):

введите описание изображения здесь

Демонстрация и объяснение

Связанный контент