【发布时间】:2012-01-16 10:23:38
【问题描述】:
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();
这是使用正则表达式来保留分隔符的相同“函数”,但是它不能按预期工作并且返回的字符串太多,我认为它分别拆分为“
var statCells = Regex.Split(rowDocument.DocumentNode.InnerHtml, @"(?<=[<td])").ToList();
如何使用 Regex.Split 在"<td" 上进行拆分?
【问题讨论】:
-
在 td 上拆分是什么意思?这如何不适用于 htmlAgilityPack?如果你这样做:doc.DocumentElement.SelectNodes("td"),你将完美地获得每个 td 节点,包括它们的标记名
-
@Polity:试试吧!它不像您期望的那样工作,因为这些特定的 TD 没有结束元素,并且内容被拉伸以包含所有内容,直到结束。 :)
-
知道了!所以你毕竟不是试图拆分 html ;)
-
@Polity: 不是任何 正确 格式的 HTML,没有。 :P