0

Не могу понять как получить с помощью регулярных выражений из тега article значения свойства data-file-url то есть получить ссылку https://data/image.png.

<article id="post_299290" class="post-preview blacklisted" data-id="299290"   data-approver-id="35"  data-width="2528" data-height="2924" 
    data-flags=""  data-score="0" data-fav-count="9" data-file-ext="png"  data-normalized-source="" data-is-favorited="false"  
    data-file-url="https://data/image.png" data-uploader-id="39" data-large-file-url="https://data/sample/sample-image.jpg" data-preview-file-url="https://data/preview/image.jpg"/>
Vladimir
  • 403
  • 2
    Вы ведь использовали инструменты для работы с html, почему вдруг регулярка? Я на 100% уверен, что у вас приложение тесно связан с html, вы не просто одну строчку разбираете, а значит у вас обязан быть нужный инструментарий, так почему не им?? – EvgeniyZ Sep 26 '20 at 11:03
  • 2
    Используйте HtmlAgilityPack или AngleSharp, это и работает быстрее, чем регулярки, и использовать удобнее. – aepot Sep 26 '20 at 11:27
  • @aepot я получил article с помощью AngleSharp не понял как получить data-file-url с помощью AngleSharp. – Vladimir Sep 26 '20 at 12:10
  • 1
  • 1
    Спасибо всех за помощь – Vladimir Sep 26 '20 at 12:34

2 Answers2

1

Вот так вот без проверки тега:

(?<=data-file-url=")[^"]*

Тест https://regexr.com/5crdk

Из

<article id="post_299290" class="post-preview blacklisted" data-id="299290"   data-approver-id="35"  data-width="2528" data-height="2924" 
    data-flags=""  data-score="0" data-fav-count="9" data-file-ext="png"  data-normalized-source="" data-is-favorited="false"  
    data-file-url="https://data/image.png" data-uploader-id="39" data-large-file-url="https://data/sample/sample-image.jpg" data-preview-file-url="https://data/preview/image.jpg"/>

найдёт

https://data/image.png
dIm0n
  • 407
-1

Можете попробовать расширение для VS Regex Editor - очень помогает для составления паттернов

var input = "<article id=\"post_299290\" class=\"post-preview blacklisted\" data-id=\"299290\"   data-approver-id=\"35\"  data-width=\"2528\" data-height=\"2924\" \r\n    data-flags=\"\"  data-score=\"0\" data-fav-count=\"9\" data-file-ext=\"png\"  data-normalized-source=\"\" data-is-favorited=\"false\"  \r\n    data-file-url=\"https://data/image.png\" data-uploader-id=\"39\" data-large-file-url=\"https://data/sample/sample-image.jpg\" data-preview-file-url=\"https://data/preview/image.jpg\"/>";

var regex = new Regex(@"data-file-url=""(\b(?:https?://|www.)\S+\b)*"""); var matches = regex.Matches(input);

var links = matches.Select(x => x.Groups[1].Value);

aepot
  • 49,560
  • Какая нужна библиотека для Select, System.Linq и System.Text.RegularExpressionsподключено и все равно ошибка!(( – Vladimir Sep 26 '20 at 11:47
  • @Vladimir Да вроде больше ничего не нужно. Правда проект .NET Core 3.1(первое попавшеся заупстил) Но все равно верхнее решение оптимальнее моего, так что без разницы – Pavel Popov Sep 26 '20 at 12:00