c# - 解析 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>
解决方案
要跳过版本号所在的中间文本,您可以使用 (non-greedy 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.Value 然后是“1.9”