Разделение строки и сохранение разделителей в результатах - PullRequest
1 голос
/ 09 декабря 2011

Читая этот вопрос , кажется, что Regex является решением моей проблемы.

Это 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();

И вот та же «функция», использующая Regex для хранения разделителяОднако он не работает должным образом и возвращает слишком много строк, я думаю, что он разделяется на «<», «t» и «d» по отдельности. </p>

var statCells = Regex.Split(rowDocument.DocumentNode.InnerHtml, @"(?<=[<td])").ToList();

Как я могу использовать Regex.Splitразделить на "<td"?

1 Ответ

2 голосов
/ 09 декабря 2011

@"(?<=[<td])" разделяется на каждые < t или d, потому что так работают классы символов. Используйте это, если вы хотите <td в начале следующей строки (а не в конце последней):

@"(?=<td)"

Это будет медленнее, чем оригинальное решение. Если вы используете String.Split и просто объединяете каждую строку с <td, то это должно работать так же, но быстрее, потому что вы не используете regexen.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...