拆分文本文档并仅匹配第一个字符串

时间:2015-08-13 04:45:39

标签: c# regex

我正在解析网页以获取一些数据。

该代码的一部分就是这样

<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。 - 他们将始终按此顺序。我想要的号码永远是文件中的第一个......

我怎样才能做到这一点?

3 个答案:

答案 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")