2014-11-05 4 views
0

Я пытаюсь получить фрагмент HTML между комментариями.Регулярное выражение Получение html между двумя комментариями

Мне нужно будет проанализировать HTML между началом и концом позже.

Я на самом деле чтение из файла HTML, но для целей тестирования я издевался следующим вверх:

 string emailFeedTxtStart = "<!--FEED FOR RECEIPT GOES HERE-->"; 
     string emailFeedTxtEnd = "<!--FEED FOR RECEIPT ENDS HERE-->"; 

     string html = 
      emailFeedTxtStart + Environment.NewLine + 
      @"<td align=""center"">" + Environment.NewLine + 
      @"<table style=""table-layout:fixed;width:380px"" border=""0"" cellspacing=""0""    cellpadding=""0"">" + Environment.NewLine + 
      "<tbody>" + Environment.NewLine + 
      "<tr>" + Environment.NewLine + 
      "<td>" + Environment.NewLine + 
      "</td>" + Environment.NewLine + 
      "</tr>" + Environment.NewLine + 
      "</tbody>" + Environment.NewLine + 
      "</table>" + Environment.NewLine + 
      "</td>" + Environment.NewLine + 
      emailFeedTxtEnd; 

     string patternstart = Regex.Escape(emailFeedTxtStart); 
     string patternend = Regex.Escape(emailFeedTxtEnd); 
     string regexexpr = patternstart + @"(.*?)" + patternend; 
     //string regexexpr = @"(?<=" + patternstart + ")(.*?)(?=" + patternend + ")"; 

     MatchCollection matches = Regex.Matches(@html, @regexexpr); 

матчей возвращаемых 0.

(обратите внимание, что намного больше HTML между).

Любая помощь была бы принята с благодарностью.

+1

Я предлагаю поэкспериментировать с помощью инструмента RegexHero: http://regexhero.net/ – Dai

+0

Почему вам нужно регулярное выражение? Почему бы просто не получить индексы литеральных строк с помощью 'IndexOf' и/или просто расщепить строку, используя ваши константы? –

+0

У меня нет, я также пытаюсь html agility pack ... Но хотелось бы задать конкретный вопрос для одного метода. Есть много возможных способов сделать это ... – ginalster

ответ

0

Что вы собираетесь анализировать HTML после? Потому что, вероятно, вы можете просто покончить с фактическим манипулированием HTML-строкой заранее. Вот решение в любом случае:

string afterFirst = html.Substring(Regex.Match(html, emailFeedTxtStart).Index + emailFeedTxtStart.Length); 
    string between = afterFirst.Substring(0, Regex.Match(afterFirst, emailFeedTxtEnd).Index); 
+0

Я проверю это утром. Спасибо – ginalster

Смежные вопросы