C#:正则表达式匹配最接近

时间:2013-01-22 23:14:36

标签: c# html regex pattern-matching closest

<table class="listProvision" class="itable">
    <tr>
        <td class="whatever">some infos</td>
        <td>some more infos</td>
        <td>13908402</td>
        <td>hello world</td>
    </tr>
    <tr>
        <td class="whatever">some infos</td>
        <td>some more infos</td>
        <td id="num">13908402</td>
        <td>hello world</td>
    </tr>
</table>

鉴于以上示例HTML,如何正确解析<tr>...</tr>table 之间listProvision的所有存在?

我试过:<table.*?listProvision.*?>(?:.*?<tr.*?>(.*?)</tr>)+.*?</table>,但我无法弄清楚出了什么问题。永远不会有任何复杂的html进入这个正则表达式,所以不要担心。

2 个答案:

答案 0 :(得分:2)

以下是如何使用Html Agility Pack

解析html字符串的示例
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);

var rows = doc.DocumentNode
              .SelectNodes("//table[@class='listProvision']/tr");

然后,您可以使用HtmlNode.InnerHtml属性获取<tr>...</tr>标记之间的所有数据。

答案 1 :(得分:0)

1)使用RegexOptions.Singlelinemake dot match newline.(你的正则表达式已经工作了,我只用单行标志就可以了here

2)access match.Groups["yourNamedCaptureGroup"].Captures用于捕获。