0

Нужно из HTML кода выдернуть содержимое тега. Но в Match ничего не приходит. Регулярное выражение рабоче - проверял в сторонних отладчиках. В чём может быть проблема

string output = "<div><img alt=\"\" src=\"/source/\" height=\"60\"/></div>";
var regex = new Regex("/(?<=<img alt=\"\" src=\")(.*)(?=\" height=\"60\")/g");
Match match = regex.Match(output);
Denis Bubnov
  • 13,958
AnZeky
  • 55

1 Answers1

3

Не стоит разбирать HTML при помощи регулярных выражений. Воспользуйтесь HTML-парсерами типа CsQuery или AngleSharp.

Пример того, как получить то-же самое на AngleSharp:

var html = "<div><img alt=\"\" src=\"/source/\" height=\"60\"/></div>";

var document = new HtmlParser(html).Parse();
var imgSrc = document.QuerySelector("img").GetAttribute("src");

В основе - обычные CSS-селекторы, как при использовании jQuery. Такой код проще составить, его проще читать, он выдает гораздо более предсказуемый результат, и на вытаскивание нужной информации затрачивается в разы меньше ресурсов, нежели при использовании регулярных выражений.

Sergey Rufanov
  • 8,500
  • 25
  • 37