%20%D0%B2%20%D1%82%D0%B5%D0%B3%D0%B5%20HTML%20(%D0%B8%D0%B7%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8).png)
У меня есть этот 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
Скриншот (до):
Скриншот (после):