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