2013-04-27 6 views
3

Не может показаться, что это после часа поиска, проб и ошибок. Я пытаюсь вернуть текст между двумя тегами html. Проблема в том, что текст охватывает несколько строк. Вот пример. Если кто-то может найти регулярное выражение для соответствия всему контенту между тегами html.Скрестите все html между тегами

<section id="mysection"> 
The text always starts on the line after the opening section tag. 
It can be anything and even span multiple lines. 
The closing tag always comes after the last line of text. 
</section> 

Я попытался

Regex.Match(html, "<section id=\"mysection\">/s+(.*?)/s+</section>"); 

с некоторым успехом, но работал только если была одна строка текста, а не если мы разрывы строк
и тому подобное. Используя пример выше, я хочу, чтобы он соответствовал «Текст всегда начинается в строке после тега секции открытия. Это может быть что угодно и даже охватывать несколько строк. Закрывающий тег всегда приходит после последней строки текста».

+9

Обязательно: http://stackoverflow.com/a/1732454/2246674 – user2246674

+0

@ user2246674 Вы избили меня к нему: P – Doorknob

+2

Точка соответствует (Почти) Любой символ http://www.regular-expressions.info/ quickstart.html – iGanja

ответ

1

Используйте это:

Regex.Match(html, "\\<section id=\"mysection\"\\>(.*?)\\</section\\>", 
      RegexOptions.Singleline); 

Согласно документации для RegexOptions.Singleline:

Определяет режим однострочного. Изменяет значение точки (.), Чтобы он соответствовал каждому символу (вместо каждого символа, кроме \ n).

Кроме того, ваши угловые кронштейны должны быть экранированы.

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