Здраствуйте.Пытаюсь подобрать регулярное выражение на Перле для нахождения "внешнего совпадения".
Тоесть для текста "<p>111<p>111</p>111<p>111</p></p>" нужно выбрать то что находится между тегами <p> и </p> . Для "обычного" выражения /<p>(.*?)<\/p>/ результат не тот что надо. Получается 111<p>111 , а надо 111<p>111</p>111<p>111</p>.
Нужно чтоб перл находил не первое совпадение </p> а последнее.Как ?
/<p>(.+)<\/p>/
>Здраствуйте.
>
>Пытаюсь подобрать регулярное выражение на Перле для нахождения "внешнего совпадения".
>Тоесть для текста "<p>111<p>111</p>111<p>111</p></p>" нужно выбрать то что находится между тегами <p> и </p> . Для "обычного" выражения /<p>(.*?)<\/p>/ результат не тот что надо. Получается 111<p>111 , а надо 111<p>111</p>111<p>111</p>.
>Нужно чтоб перл находил не первое совпадение </p> а последнее.
>
>Как ?
/^<p>(.*?)<\/p>$/Вроде так. Строка начинается на <p>, оканчивается на </p>
Спасибо за ответы, но ни тот ни другой не подходит./<p>(.+)<\/p>/ просто найдет подстроки где между <p> и <\/p> есть больше одного символа.
А этот /^<p>(.*?)<\/p>$/ тоже не подходит. Текст может быть и такой "bla<p>111<p>111</p>111<p>111</p></p>bla"
Я уже нашел один вариант.
##STARTBLOCK\[([0-9])(,([0-9]))?\]##((?!.*##STARTBLOCK).*?)##ENDBLOCK##
/<p>((?!.*</p>).*?)<\/p>/
Это выражение находит парные теги, но начиная из внутренних пар, а мне нужно внешние пары находить.