拆分字符串并在结果中保留分隔符

时间:2011-12-09 02:04:39

标签: c# .net html regex string

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"

1 个答案:

答案 0 :(得分:2)

@"(?<=[<td])"分散在每个< td上,因为这是字符类的工作方式。如果您希望<td位于下一个字符串的开头(而不是最后一个字符串的结尾),请使用此选项:

@"(?=<td)"

虽然这比原来的解决方案要慢。如果您使用String.Split并且只是将每个字符串与<td连接起来,那么它应该以相同的方式工作,但速度更快,因为您不使用regexen。