Доброе время суток! 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 с помощью регулярок или любым другим способом.
Регулярки - это хорошо, я сам их люблю и часто применяю.
Однако, 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;
}
}
регулярное выражение /\d+,\d+/
У меня вот такой шаблон попал в искомое число: (?<=[>])[\d][\d,]*(?=\s\|)
Однако, лучше все таки такие вещи парсером HTML делать.
Спасибо всем за помощь! Получилось сие чудо. Чуть-чуть доработал под себя.
//Перевел в текст через HtmlAgilityPack и вабрал значение до 1 000,00
// Узел, содержащий html.
var data = ...;
var match = Regex.Match(Convert.ToString(data.InnerText), @"\d+.\d+,\d+");
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости