При анализе HTML обнаружена неверная строка - PullRequest
0 голосов
/ 22 января 2019

Вот мое Регулярное выражение для получения номера версии из контента PlayStore HTML:

var content = responseMsg.Content == null 
                  ? null 
                  : await responseMsg.Content.ReadAsStringAsync();

var versionMatch = Regex.Match(
    content, 
    "<div[^>]*>Current Version</div><span[^>]*><div><span[^>]*>(.*?)<").Groups[1];

if (versionMatch.Success)
{
    version = versionMatch.Value.Trim();
}

enter image description here

Здесь я получаю это значение Inside VersionMatch = "{}"

Так как получить эту правильную версию? как VersionMatch = "1.9"

Содержание html очень большое, поэтому я отрезал его от содержания html:

<div class="hAyfc">
<div class="BgcNfc">Current Version</div>
<span class="htlgb">
<div class="IQ1z0d">
<span class="htlgb">1.9</span>
</div>

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Вы можете попробовать использовать HtmlAgilityPack с Fizzler.Systems.HtmlAgilityPack , так что вы можете сделать что-то вроде этого:

var web = new HtmlWeb();
var html = web.Load(uri);
var documentNode = html.DocumentNode;
var version = documentNode.QuerySelector(".htlgb").InnerHtml;

И вам не нужно беспокоиться о регулярном выражении

0 голосов
/ 22 января 2019

Чтобы пропустить промежуточный текст между Current Version</div> и <span>, где указан номер версии, вы можете использовать (не жадный) .*?.Точка также будет соответствовать \r\n, если задано RegexOptions.Singleline.Чтобы получить правильный диапазон, укажите его содержимое как «цифры и точки» ([\d\.]+) вместо «что-нибудь» (.*?)

var content = @"<div class=""hAyfc"">
<div class=""BgcNfc"">Current Version</div>
<span class=""htlgb"">
<div class=""IQ1z0d"">
<span class=""htlgb"">1.9</span>
</div>";

var versionMatch = Regex.Match(
    content, 
    @"<div[^>]*>Current Version</div>.*?<span[^>]*>([\d\.]+)<", RegexOptions.Singleline).Groups[1];

versionMatch. Значение тогда равно «1,9»

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