使用c#中的正则表达式检索数据

本文关键字:检索 数据 正则表达式 使用 | 更新日期: 2023-09-27 17:54:51

数据:

<tr>
<td>
<a href="somelink">
some. .data...
</a>
</td>
<td>Black</td>
<td>57234</td>
<td>5431.60</td>
<td><font class="down">  -125.02</font></td>
</tr><tr>
<td>
<a href="somelink">
some. .data...
</a>
</td>
<td>Blue</td>
<td>57234</td>
<td>5431.60</td>
<td><font class="up">  -125.02</font></td>
</tr><tr>
<td>
<a href="somelink">
some. .data...
</a>
</td>
<td>Brown</td>
<td>57234</td>
<td>5431.60</td>
<td><font class="down">  -125.02</font></td>
</tr>
...more data...

我想提取一些。数据…';'黑色';'57234';'5431.60’;一次。[不需要第五个td数据。]

最初,

<tr><td><a.*>([a-zA-Z0-9 -]+)</a></td><td>('w+)</td><td>(['d]+'.'d+)</td><td>('d+'.'d+)</td>

正在工作。(通过命中和未命中进近(

但是,现在它坏了。

现在,当我使用<td>(.*)</td><'w+>(.*)</'w+>时:它在每个tr中显示最后四个td的数据。但是,为什么它不显示<a href...>...</a>?我如何获得我想要的数据?

使用c#中的正则表达式检索数据

Regex通常是解析HTML的糟糕方法。

我建议看一下HTML敏捷包或CsQuery,它们是专门为.NET.构建的HTML解析器

HTML敏捷包可以使用XPath和LINQ进行查询,CsQuery使用jQuery选择器。

如果您使用真正的html解析器,您的代码将更简单、更容易维护

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var table = doc.DocumentNode.Descendants("tr")
           .Select(tr => tr.Descendants("td").Select(td => td.InnerText).ToList())
           .ToList();

给定您提供的示例html,上面的代码将返回3行,每行包含5列。