Регулярное выражение соответствует всем между двумя строками, многострочными

Как мне регулярное выражение сопоставить все, что находится между двумя строками? Вещи между двумя строками занимают несколько строк и могут содержать все HTML-символы.

Например:

<p>something</p>



<p class="sdf"> some text</p>
<p> some other text</p>



<p>The end</p>

Я хочу снять всю необязательную часть. но жадный совпадение любого персонажаделать то, что я хотел .. шаблон, который ям с помощью

.*(.*)(.*)\s+(?=)(.*)\s+

Все они соответствуют первому необязательному тегу, если задана только первая часть, но нехорошо с полными линиями.

Вот'Вот пример:http://regexr.com?352bk

Спасибо

 SLaks30 мая 2013 г., 17:34
@rednaw: 1) Да; XML использует тот же синтаксис комментариев. 2)htmlagilitypack.codeplex.com
 LocustHorde30 мая 2013 г., 18:28
@ rednaw, я 'м с использованием C #
 LocustHorde30 мая 2013 г., 18:27
@SLaks, как бы вы удалили необязательную часть и вернули бы все остальное?
 gitaarik30 мая 2013 г., 17:32
@SLaks парсеры XML учитывают комментарии HTML?
 gitaarik30 мая 2013 г., 17:32
какой язык вы используете?
 SLaks30 мая 2013 г., 17:31
Вы не должны использовать регулярные выражения.stackoverflow.com/q/1732348/34397

Ответы на вопрос(4)

Решение Вопроса

Без точечного флага (s в/regex/s), точка (.) победил'не соответствует возврат каретки.

Вы должны использовать.*? вместо.* ленивое соответствие необязательного содержимого (см.PLEASE DO NOT MATCH! предложение в примерах).

 LocustHorde30 мая 2013 г., 17:31
Ааа! что такое dotall и чем он занимается, пожалуйста?
 LocustHorde30 мая 2013 г., 17:36
отлично, спасибо
 sp00m30 мая 2013 г., 17:34
@LocustHorde Я редактировал.
 Bad Wolf30 мая 2013 г., 17:35
@LocustHorde По умолчанию подстановочный знак в регулярном выражении (.) неt соответствует символам новой строки, это означает, что регулярное выражение прекращает поиск в конце строки. Включив точку все. также будет включать символы новой строки в своем совпадении.

? после :*

<!-- OPTIONAL -->(.*?)<!-- OPTIONAL END -->

Вам это поможет?

Также в зависимости от используемого вами языка программирования у вас есть модификаторы, которые сделают ваше регулярное выражение точкой (.) совпадать с новыми строками тоже. Для PHP у вас естьs модификатор (dotall), например:

http://php.net/manual/en/reference.pcre.pattern.modifiers.php

 gitaarik30 мая 2013 г., 17:52
Хороший, изменил мой ответ
 LocustHorde30 мая 2013 г., 17:59
благодарю вас! (текст наполнителя)
 sp00m30 мая 2013 г., 17:37
Многострочный нетТ, что нужно ОП, но все точнее. Мультилайн сделает^$ якоря соответствуют нескольким строкам вместо одной.

я думаю, что нашел ответ, проверьте это в своем коде:

<!-- OPTIONAL -->[\w\W]*<!-- OPTIONAL END -->

надеюсь, это поможет

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

 LocustHorde30 мая 2013 г., 17:58
Спасибо (текст наполнителя)

Ваш ответ на вопрос