\ K escape-последовательность в .NET - чтобы получить 3-й <TD>

0

Я пытаюсь проанализировать этот html-код:

<tr>
  <td>sdafsadf</td>
  <td>12121</td>
  <td>sdafasdf</td>
  <td>32222</td>
  <td>99999</td>
</tr>

и получить второй <td> the <td>12121</td> ТОЛЬКО, я нашел эту ссылку: поддержка\K в regex и.NET не поддерживает escape-последовательность \K, я делаю REGEX:

(?s)(^(?:(.*?)(\K<td)){2})(.*?</td>)

и хорошо работать в http://www.regexr.com/, пожалуйста, помогите мне использовать этот REGEX или аналогичный в.NET.

Из-за этого я схожу с ума и устал

С уважением,

  • 1
    По какой-то причине вы не используете вместо этого анализатор HTML?
  • 0
    Спасибо за ответ. Да, мне нужно использовать REGEX, htmlagilitypack не работает для меня :( к сожалению
Показать ещё 3 комментария
Теги:

1 ответ

0

Я бы использовал библиотеку парсера HTML, например: http://htmlagilitypack.codeplex.com/

(Подробнее об этом здесь)

Но просто на основе вашего фрагмента, здесь один из способов:

 var str = @"
 <tr>
    <td>sdafsadf</td>
    <td>12121</td>
    <td>66666</td>
    <td>32222</td>
    <td>99999</td>
 </tr>";
 var re = new Regex(@"(<td>([^<]+)</td>)", RegexOptions.Multiline | RegexOptions.IgnoreCase);
 Console.WriteLine(re.Matches(str)[1].Groups[2].Value);
 Console.WriteLine(re.Matches(str)[2].Groups[2].Value); 
  • 0
    Спасибо за ответ, в этом примере кода REGEX получает ВСЕ совпадения TD, но регулярное выражение: (?s)(^(?:(.*?)(\K<td)){2})(.*?</td>) вернуть ТОЛЬКО ОДИН матч. Мне нужно это, REGEX возвращает только одну группу и одно совпадение, но без использования \ K в .NET

Ещё вопросы

Сообщество Overcoder
Наверх
Меню