C#正则表达式问题

时间:2011-02-04 22:53:59

标签: c# regex

我想从HTML页面中提取所有表格行。 但是使用模式@"<tr>([\w\W]*)</tr>"不起作用。 它给出了一个结果,即<tr>首次出现</tr>的最后一次出现。 但我希望每次出现<tr>...</tr>值。 谁能告诉我怎么做到这一点?

2 个答案:

答案 0 :(得分:5)

[\w\W]*匹配greedily,因此它会从第一个<tr>到最后一个</tr>匹配。

正则表达式方法效果不佳,因为HTML不是常规语言。如果你真的想尝试使用带有RegexOptions.Singleline标志的"<tr>(.*?)</tr>"这样的惰性修饰符,那么这并不能保证在所有情况下都能正常工作。

要解析HTML,您需要一个HTML解析器。试试HTML Agility Pack

答案 1 :(得分:2)

我同意Mark:您应该使用HTML Agility Pack库。

关于你的正则表达式,你应该使用类似的东西:

@"<tr>([\s\S]*?)</tr>"

这是一种非贪婪的模式,你应该为每个TR获得一个匹配。