The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Регулярное выражение для рекурсивных вложений."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Регулярное выражение для рекурсивных вложений."  
Сообщение от tower email(??) on 16-Окт-06, 15:36 
Здраствуйте.

Пытаюсь подобрать регулярное выражение на Перле для нахождения "внешнего совпадения".
Тоесть для текста "<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> а последнее.

Как ?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Регулярное выражение для рекурсивных вложений."  
Сообщение от ihor on 17-Окт-06, 19:41 
/<p>(.+)<\/p>/

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Регулярное выражение для рекурсивных вложений."  
Сообщение от mrwel (??) on 18-Окт-06, 06:07 
>Здраствуйте.
>
>Пытаюсь подобрать регулярное выражение на Перле для нахождения "внешнего совпадения".
>Тоесть для текста "<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>

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Регулярное выражение для рекурсивных вложений."  
Сообщение от tower email(??) on 19-Окт-06, 09:53 
Спасибо за ответы, но ни тот ни другой не подходит.

/<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>/
Это выражение находит парные теги, но начиная из внутренних пар, а мне нужно внешние пары находить.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру