正则表达式在html标签中查找内容

时间:2010-10-03 04:08:31

标签: c# .net regex

我需要解析一个html文件并用C#/ .net提取NeedThis *字符串,示例代码为:

<tr class="class">
    <td style="width: 120px">
        <a href="NeedThis1">NeedThis2</a>
    </td>
    <td style="width: 120px">
        <a href="NeedThis3">
            NeedThis4</a>
    </td>
    <td style="width: 30%">
        NeedThis5
    </td>
    <td>
        NeedThis6
    </td>
    <td style="width: 120px">
        NeedThis7
    </td>
</tr>

我知道html解析器在这里应该更好,但我需要的只是提取这些文本,这只是一个临时助手工具......

任何人都可以帮助我吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

如果你确定你的html是有效的,你可以使用Linq到Xml,否则你最好使用像HTML Agility Pack这样的解析器

答案 1 :(得分:2)

无论你是为一次性还是为“完成的项目”做这件事都没关系。您的任务不是文本提取,并且它不是正则表达式可以有效执行的操作。您正在寻找的数据取决于HTML的结构。您的任务是解析HTML。当您的任务正在解析HTML时,请使用HTML解析器。这并不困难。事实上,除了编写你需要的一堆正则表达式之外,还有很多更容易

答案 2 :(得分:0)

您好像回答了自己的问题。的 You should use a parser 即可。但如果不这样做,可以使用RE NeedThis.*

当然,如果您想要使用这些字符串的任何上下文,您应该只使用解析器。

答案 3 :(得分:0)

汉斯,正如你可以通过RegEx看到的其他答案可能不是做你想做的最好的方式,但是因为我需要练习我的RegEx,所以我继续做了一个以防万一你想要去尝试。这只会捕获NeedThis2,但它应该让您了解如何在适当的解决方案中创建自己的RegEx。

<a href="NeedThis1">NeedThis2</a>

RegEx捕获NeedThis2

(?:<a[^<a]+?>)(\S)*(?:<[^<]+?a>)

非常讨厌吧? :)