Reading this question,似乎正则表达式解决了我的问题。
这是我试图拆分的HTML:
\n\t\t\t
<td class=\"stats_name\">
Damage \n\t\t\t
<td class=\"stats_value\">
53 \n\t\t\t
<td class=\"stats_modifier\">
(<span class=\"ability_per_level_stat\">+3.2 / per level</span>) \n\t\t\n\t\t
</td>
</td>
</td>
出于我的原因,我需要将其拆分为<td
字符串。这对HtmlAgilityPack和String.Split运行良好,但是分隔符已被删除,我需要它。
var statCells = rowDocument.DocumentNode.InnerHtml.Split(new string[] {"<td"}, StringSplitOptions.RemoveEmptyEntries).ToList();
这里使用正则表达式保留分隔符的功能相同,但是它没有按预期工作并返回太多字符串,我认为它正在拆分“&lt;” “t”和“d”分别。
var statCells = Regex.Split(rowDocument.DocumentNode.InnerHtml, @"(?<=[<td])").ToList();
如何使用Regex.Split拆分"<td"
?
答案 0 :(得分:2)
@"(?<=[<td])"
分散在每个<
t
或d
上,因为这是字符类的工作方式。如果您希望<td
位于下一个字符串的开头(而不是最后一个字符串的结尾),请使用此选项:
@"(?=<td)"
虽然这比原来的解决方案要慢。如果您使用String.Split并且只是将每个字符串与<td
连接起来,那么它应该以相同的方式工作,但速度更快,因为您不使用regexen。