Regex для получения значения src из тега img - PullRequest
2 голосов
/ 29 июня 2009

Я использую следующее регулярное выражение для получения значения src первого тега img в документе HTML.

string match = "src=(?:\"|\')?(?<imgSrc>[^>]*[^/].(?:jpg|png))(?:\"|\')?"

Теперь он фиксирует атрибут src, который мне не нужен. Мне просто нужен URL внутри атрибута src. Как это сделать?

Ответы [ 3 ]

6 голосов
/ 29 июня 2009

Анализ вашего HTML с чем-то еще. HTML не является регулярным , и поэтому регулярные выражения совсем не подходят для его анализа.

Используйте HTML-анализатор или XML-анализатор, если HTML строгий. Намного проще получить значение атрибута src с помощью XPath:

//img/@src

Синтаксический анализ XML встроен в пространство имен System.Xml . Это невероятно мощно. Разбор HTML будет немного сложнее, если HTML не строгий, но есть много библиотек, которые сделают это за вас.

4 голосов
/ 29 июня 2009

см. Когда не использовать Regex в C # (или Java, C ++ и т. Д.) и Требуется синтаксический анализатор C # HTML

PS, как я могу поставить ссылку на вопрос StackOverflow в комментарии?

1 голос
/ 29 июня 2009

Ваше регулярное выражение должно (на английском языке) соответствовать любому символу после кавычки, который не является кавычкой внутри тега в атрибуте src.

В регулярном выражении Perl это будет выглядеть так:

/src=[\"\']([^\"\']+)/

URL будет в $1 после запуска.

Конечно, это предполагает, что URL в ваших атрибутах src заключены в кавычки. Вы можете изменить значения в скобках [] соответственно, если они не.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...