Как вытащить значение между закрытым и откртым тегом С#

242
18 января 2018, 17:59

Доброе время суток! C помощью HtmlAgilityPack получаю строку из исходного кода:

 <div class="b-auth">
<a class="b-link" href="/personal/" >10000031007</a>(<span class="b-user-acc b-user-acc_type_deb">Аванс: </span>113,04 | <a class="b-link" href="/?logout=yes" >Выход</a>)
</div>

Вопрос, как вытащить значение 113,04 с помощью регулярок или любым другим способом.

Answer 1

Регулярки - это хорошо, я сам их люблю и часто применяю.

Однако, html - нерегулярная грамматика, поэтому регулярные выражения плохо подходят для его парсинга.

Чтобы гарантированно не ошибиться, можно сперва с помощью средств HtmlAgilityPack получить текстовые узлы, а уже их распарсить регэксами.

// Узел, содержащий приведённый в вопросе html.
var divNode = ...
var textNodes = divNode.ChildNodes.OfType<HtmlTextNode>();
foreach (var node in textNodes)
{
    var match = Regex.Match(node.Text, @"\d+,\d+");
    if (match.Success)
    {
        Console.WriteLine(match.Value); // нужное нам значение
        break;
    }
}
Answer 2

регулярное выражение /\d+,\d+/

Answer 3

У меня вот такой шаблон попал в искомое число: (?<=[>])[\d][\d,]*(?=\s\|)

Однако, лучше все таки такие вещи парсером HTML делать.

Answer 4

Спасибо всем за помощь! Получилось сие чудо. Чуть-чуть доработал под себя.

//Перевел в текст через HtmlAgilityPack и вабрал значение до 1 000,00
// Узел, содержащий html.
var data = ...;
var match = Regex.Match(Convert.ToString(data.InnerText), @"\d+.\d+,\d+");
READ ALSO
Выбор СУБД для приложения [требует правки]

Выбор СУБД для приложения [требует правки]

На внешнем сервере будет находится 2 приложенияПервое приложение ежесекундно берет данные из потока в интернете и каждую минуту заносит...

236
NavigationView переключение страниц в области Content UWP

NavigationView переключение страниц в области Content UWP

Столкнулся с проблемой переключения окон в области Content в новом NavigationViewСобственно, мне нужно переключение на другую страницу по нажатии...

235
Automapper и IDataReader

Automapper и IDataReader

Доброго времени суток! У меня возник такой вопросДопустим у меня есть бд, в которой есть таблицы вида:

230