BPaton Ответов: 1

Извлекать выгоду из див


У меня есть следующий HTML код

<div class="article-price">
            <span class="article-availability immediately js-popover" title="Availability" data-content="Available now" data-placement="top" data-container="body"></span><div>
      
         <span class="currency">£</span>6,830
   </div></div>
         <div class="article-price-info">
               </div>


Мне нужно извлечь значение 6,830 с помощью регулярного выражения C# или чего-то подобного.

Бретт

Что я уже пробовал:

<span [^>]*class=\"currency\"(.*?)</span>

1 Ответов

Рейтинг:
12

Richard Deeming

Этот шаблон будет соответствовать значению, которое вы хотите получить из показанных входных данных:

<span[^>]*\sclass="currency"[^>]*>[^<]*</span>(?<value>[\d,]+)
Однако регулярные выражения не являются хорошим способом синтаксического анализа HTML. Было бы лучше использовать что-то вроде AngleSharp[^] или HTML Agility Pack[^] чтобы вместо этого разобрать документ.


BPaton

Спасибо за ответ, Ричард. Я попробовал использовать регулярное выражение, и оно жалуется на "\s", "currency" и "\d". Есть идеи? Я действительно пытался использовать AngleSharp, но не смог найти правильного решения

Richard Deeming

Если вы используете C#, вам нужно будет экранировать специальные символы в строке (\ и "):

new Regex("<span[^>]*\\sclass=\"currency\"[^>]*>[^<]*</span>(?<value>[\\d,]+)"

Или используйте дословную строку и удвойте кавычки вокруг значения атрибута:
new Regex(@"<span[^>]*\sclass=""currency""[^>]*>[^<]*</span>(?<value>[\d,]+)"

BPaton

Спасибо, Ричард. Работает, как и ожидалось. Ценю вашу помощь.