正则表达式获取包含特定innerHTML的单元格的表

时间:2012-09-01 00:13:49

标签: c# regex

想象一下这张桌子:

<table cellpadding="0" border="0">
<tr class="someclass">

<td>blah blah THISISIMPORTANT blah blah</td>

</tr>
</table>

我想只选择具有包含'THISISIMPORTANT'的innerHTML的TD的表。

必须使用c#

中的正则表达式

这就是我的尝试:

<table\s*.*?\s*>\s*.*?\s*<td\s*.*?\s*>\s*.*?\s*</td>\s*.*?\s*</table>

2 个答案:

答案 0 :(得分:2)

/<table[^>]*>(?:.(?!<\/table>))*<td[^>]*>(?:.(?!<\/td>))*THISISIMPORTANT.*?<\/td>.*?<\/table>/

那很接近......我的意思是,只要没有人使用“&gt;”在标签内,你很好。但你真的应该找到比正则表达式更好的方法。

答案 1 :(得分:0)

为什么不使用HTML Agility Pack?它非常好地解析HTML,甚至支持LINQ,因此用它实现你想要的东西应该是微不足道的。

可以用正则表达式解析你想要的文本,但是你需要假设它总是完美地形成并且以相同的特定格式等,这将使代码难以维持。

编辑:我发现了另一个与您的问题几乎完全相同的问题,其中的代码示例展示了如何使用HTML敏捷包来实现解决方案:regex to get value of inside a particular TD in HTML