想象一下这张桌子:
<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>
答案 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