Я хочу удалить все, что ожидалось src
в Image
тег, используя regex
.
Я использую C#, но я не хочу использовать HTMLAgilityPack
Я хочу использовать его только с помощью регулярного выражения.
Как это получить?
Если String
является <img id="image" class="header" src="test.png">
, то он возвращается в <img src="test.png">
Тег изображения может содержать много других дополнительных свойств.Удалить все ожидают src в тегах изображений с помощью Regex
ответ
Чтобы уточнить мои комментарии: Обычно я бы не рекомендовал разбор HTML с использованием Regex. однако это одно из немногих случаев, когда это возможно, не заканчивая катастрофически сложной строкой регулярного выражения, потому что здесь у вас есть единственный узел с одной парой соответствующих угловых скобок. Кроме того, OP требует только один тег из этой строки. Если бы ему нужно было сделать что-то более сложное, я бы согласился, что он должен использовать HTMLAgilityPack, но это вполне выполнимо.
Что вы делаете - вы извлекаете тег из строки, используя это регулярное выражение: (src=['\"].+?['\"])
. Тогда вы берете то, что вы извлекли из строки и вставить его в новую строку:
String newImgTag = String.Format("<img {0}>", srcMatch);
Опять же, если бы это было усложнять (или, если я должен был сделать другие манипуляции с HTML), я бы просто пропустить регулярное выражение и идти на установленные решения, как вышеупомянутый HTMLAgilityPack, потому что он предлагает гораздо больше поддержки HTML-манипуляции.
Однако я не рассматриваю это как манипуляцию с HTML, потому что у вас есть один тег без даже подходящего закрывающего тега. Это больше похоже на основные манипуляции с строками. Это похоже на вычисление числа на вторую мощность: я сомневаюсь, что кто-то будет импортировать всю математическую библиотеку только для этого, они просто сделают N * N.
Я полностью ожидаю и соглашаюсь с тем, что люди снимут меня, даже учитывая для использования Regex. Однако прежде чем вы это сделаете, прочитайте сообщение и подумайте об этом. Это один из тех пограничных случаев, когда HTMLAgilityPack сделает проект более сложным, не добавив ничего, кроме того, что вы не используете Regex. У Regex есть свои возможности, только когда вы злоупотребляете им, что он становится монстром для работы.
Я все еще не убежден. Это может нарушить самые разные способы (атрибут src в теге скрипта, сломанное содержимое в комментариях, страница с исходным кодом HTML и т. Д.) Возможно, она будет работать с входными данными OP, но опять же * возможно, не * , Мы не знаем достаточно о задаче - вот почему я попросил разъяснений. Я не категорически против использования регулярных выражений в HTML. Некоторые задачи требуют быстрого и грязного подхода. Но без дополнительной информации это не совсем понятно. Большинство людей, которые задают такие вопросы, действительно должны использовать парсер. –
@ dan1111 Я согласен с вашим комментарием. Тем не менее, все, что у меня было, что я мог бы основать свой ответ, было в этой строке примера. Основываясь на том, что сказал OP (строка, содержащая один тег изображения с атрибутом src и любым количеством других атрибутов), для этого достаточно простое Regex. Не похоже, что он просит обработать все дерево элементов DOM с помощью Regex. У него также может быть законная причина не в синтаксическом анализе. Он может находиться в закрытой среде с синдромом «не придумано здесь». Он мог бы работать над очень небольшим проектом, где парсер резко увеличил размер проекта. – Nzall
- 1. REGEX: удалить все, кроме ВСЕХ изображений
- 2. Удалить все скрипты с помощью javascript regex
- 3. Удалить стиль фона во всех тегах html с помощью javascript
- 4. Подсчитайте все, что нет в тегах с Regex
- 5. Удалить подстроку с помощью Regex
- 6. Как получить строковые данные в тегах HTML с помощью regex
- 7. Удалить JavaScript с помощью Regex
- 8. Загрузка изображений ng-src с помощью webpack
- 9. Image Tag's src с помощью Regex
- 10. Совсем все ожидают определенной строки
- 11. удалить все черенки regex
- 12. regex: удалить все, кроме?
- 13. Regex изменить формат все IMG SRC атрибутов
- 14. Обменивать атрибуты в тегах с помощью Visual Studio 2008 RegEx
- 15. Удалить в тегах jQuery
- 16. Заменить атрибуты SRC и HREF с помощью regex в PHPStorm
- 17. Задайте атрибут в HTML-тегах с regex
- 18. Удалить символы с помощью Regex
- 19. Как удалить стиль во всех тегах img с помощью php?
- 20. Удалить HTML с помощью Regex
- 21. C# Regex img src
- 22. Как удалить все перед переменным числом с помощью Perl/Regex
- 23. Удалить все позади «-» с помощью Regex in Atom
- 24. Как удалить все адреса веб-сайтов с помощью regex
- 25. Как удалить нежелательные пробелы в тегах html с помощью Javascript?
- 26. Удалить все iframe, содержащие src = "some_src.com/....."
- 27. Regex удалить все после Regex Match
- 28. Удалить почти все HTML комментариев с помощью Regex
- 29. Как удалить все символы, кроме указанных, с помощью regex?
- 30. Заменить все символы в p-тегах с помощью замены javascript
«Я не хочу использовать HTMLAgilityPack, я хочу использовать его только с помощью регулярных выражений». Вы действительно должны объяснить, почему вы не хотите использовать то, что обычно является правильным инструментом для работы. В противном случае вы просите нас решить что-то, что совершенно хорошая библиотека уже разрешила, без всякой видимой причины. –
@ dan1111 Обычно я согласен с вами. Однако это не совсем соответствует всей HTML-странице, но только внутри одного узла, который уже был извлечен. Кроме того, все, что требует соответствия, это 'src =" test.png ", потому что вы можете просто поместить это в новый тег HTML. Это ОЧЕНЬ простое совпадение: '' (src = \ ". * \") ". Если он не нуждается в HTMLAgilityPack для чего-либо еще, просто чтобы соответствовать этому одиночному тегу, я думаю, что было бы излишним добавить его только для этого единственного извлечения из одного узла. Однако, если ему нужно сделать больше, я согласен с тем, что он должен пойти на установленное решение. – Nzall
@NateKerkhofs Если тег src не является последним тегом. Или использовать одинарные кавычки. – Rawling