首页 > 解决方案 > 解析 HTML 时发现错误的字符串

问题描述

这是我从 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();
}

在此处输入图像描述

在这里,我在 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>

标签: c#regexxamarinxamarin.forms

解决方案


要跳过版本号所在的中间文本,您可以使用 (non-greedy Current Version</div>) 。如果给出,点也将匹配。要获得正确的跨度,请将其内容指定为“数字和点”()而不是“任何东西”()<span>.*?\r\nRegexOptions.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.Value 然后是“1.9”


推荐阅读