我正在解析网页以获取一些数据。
该代码的一部分就是这样
<div class="persona_name persona_level">Level
<div class="friendPlayerLevel lvl_20">
<span class="friendPlayerLevelNum">25</span>
</div>
</div>
<div class="friendPlayerLevel lvl_400 lvl_plus_10">
<span class="friendPlayerLevelNum">417</span>
</div>
<div class="friendPlayerLevel lvl_200 lvl_plus_10">
<span class="friendPlayerLevelNum">217</span>
</div>
我对RegEx并不熟悉,并且正在考虑使用string.split。
无论如何,我只想让它返回第一个值。看看它在哪里&#34; 25&#34;在第一行。我想要那个号码,而不是其他两个。
P.S。 - 他们将始终按此顺序。我想要的号码永远是文件中的第一个......
我怎样才能做到这一点?
答案 0 :(得分:2)
我建议使用HtmlAgilityPack。
答案 1 :(得分:0)
如果你正在为此寻找正则表达式,你可以试试这个:
(>\d+<)
这抓取了以下第一组:&gt; 25&lt;,&gt; 0&lt;,&gt;&amp; 2500000&lt;你将不得不剥离“&gt;”和“&lt;”但这可以用来假设它是第一组并且总是至少有一个数字。
修改强>
这是一个更精确的正则表达式,你不必剥离任何标签字符
friendPlayerLevelNum">(\d+)
答案 2 :(得分:0)
如果你想在文件中只包含一个数字的第一个跨度,假设你的html是一个名为“html”的字符串变量,你可以使用类似下面基于正则表达式的方法:
int number;
var rx = new Regex("<span class=\"friendPlayerLevelNum\">([0-9]+)</span>");
var match = rx.Match(html);
if(match.Success && Int32.TryParse(match.Groups[1].Value, out number))
Console.WriteLine("Got the number: {0}", number);
else
Console.WriteLine("not found")