C#正则表达式问题

Bar*_*run 0 c# regex

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

Mar*_*ers 5

[\w\W]*贪婪地匹配所以从第一个<tr>到最后一个匹配</tr>.

正则表达式方法不能很好地工作,因为HTML不是常规语言.如果你真的想尝试使用lazy修饰符,比如"<tr>(.*?)</tr>"使用RegexOptions.Singlelineflag,那么这并不能保证在所有情况下都能正常工作.

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

  • 我们都知道当你试图用正则表达式解析html时会发生什么...... http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454# 1732454 (2认同)