匹配表w / Regex

时间:2012-12-18 16:01:04

标签: c# .net regex .net-4.0

我正在尝试使用正则表达式匹配表格,但我遇到了一些问题。我无法弄清楚它为什么不能正常匹配。这是HTML:

    <table class="integrationteamstats">
    <tbody>
    <tr>
        <td class="right">
            <span class="mediumtextBlack">Queue:</span>
        </td>
        <td class="left">
            <span class="mediumtextBlack">0</span>
        </td>
        <td class="right">
            <span class="mediumtextBlack">Aban:</span>
        </td>
        <td class="left">
            <span class="mediumtextBlack">0%</span>
        </td>
        <td class="right">
            <span class="mediumtextBlack">Staffed:</span>
        </td>
        <td class="left">
            <span class="mediumtextBlack">0</span>
        </td>
    </tr>
    <tr>
        <td class="right">
            <span class="mediumtextBlack">Wait:</span>
        </td>
        <td class="left">
            <span class="mediumtextBlack">0:00</span>
        </td>
        <td class="right">
            <span class="mediumtextBlack">Total:</span>
        </td>
        <td class="left">
            <span class="mediumtextBlack">0</span>
        </td>
        <td class="right">
            <span class="mediumtextBlack">On ACD:</span>
        </td>
        <td class="left">
            <span class="mediumtextBlack">0</span>
        </td>
    </tr>
    </tbody>
    </table>

我需要获得2条信息: 队列中的td内部的数据和下面的td内的数据等待(所以队列计数和等待时间)。很明显,这些数字会经常更新。

这是我用于提取初始表的正则表达式,但它不起作用:

Match statstable = Regex.Match(this.html, "<table class=\"integrationteamstats\">(.*?)</table>");

而且我不确定我应该用什么正则表达式从td获取数据。

在有人要求之前,没有办法我无法更新HTML以获得ID或其他任何性质。它几乎就是这样。唯一一致的是td的位置。

1 个答案:

答案 0 :(得分:5)

我建议使用HTML Agility Pack来解析HTML并查询其结构,而不是正则表达式。

  

什么是Html Agility Pack(HAP)?

     

这是一个敏捷的HTML解析器,它构建一个读/写DOM并支持普通的XPATH或XSLT(你实际上不需要理解XPATH或XSLT来使用它,不用担心......)。它是一个.NET代码库,允许您解析“out of the web”HTML文件。解析器非常容忍“真实世界”格式错误的HTML。对象模型与提出System.Xml非常相似,但对于HTML文档(或流)。

一般来说,regex is a poor choice for parsing HTML