Найти и вырезать целиком произвольный <div>, помогите усмирить "жадность"

Статус
В этой теме нельзя размещать новые ответы.

Gaudi

Мой дом здесь!
Регистрация
11 Янв 2007
Сообщения
445
Реакции
420
Добрый день,
Вопрос конечно может быть и нубский, но к сожалению, сам не могу разобраться ((
Помогите составить регулярку, нужно найти и заменить/вырезать целиком весь блок <div>*</div>, который содержащий определённый текст (в примере TXT)
Код:
<div>
много строк
</div>

<div>
много строк
произвольный текст TXT
много строк
</div>
если блок состоит из <div>произвольный текст TXT</div>, то найти не проблема, а вот если до искомого текста строк много, то захватывает и первый div
 
Последнее редактирование:
В конструкции .*? нужно проверять что не вышли за границы блока примерно так
Код:
<div>(?:(?!</div>).)*?произвольный текст TXT.*?</div>
 
истинна где-то рядом, но не работает как нужно
Для просмотра ссылки Войди или Зарегистрируйся
Там для выражения заданы модификаторы /g /i, но нет модификатора /s, а без него метасимвол точка соответствует
всем символам, кроме символа новой строки.

Можно также настроить модификаторы прямо в регулярном выражении
Код:
(?is)<div>(?:(?!<\/div>).)*?TXT.*?<\/div>
 
Последнее редактирование:
Чтобы не зависеть от настроек модификаторов, в случаях когда нужно работать с многострочным текстом, вместо точки принято использовать конструкцию [\S\s]
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху