Регулярные выражения: найти содержимое тегов

GrandT

Client
Регистрация
23.07.2014
Сообщения
160
Благодарностей
64
Баллы
28
Задача: Выделить содержимое блока, заключенного в теги <div class="content"> ... </div>, но так, чтобы внутренние </div> не попадали в искомое

Нашел вот такое решение отсюда http://citforum.ru/internet/articles/regexp_tutorial/

Задача
Выделить в HTML разметке содержимое определённых блоков с установленными атрибутами:

  • абзац (тег <p>) с CSS классом content
  • элемент списка (тег <li>) с CSS классом content
<p>Абзац 1</p>
<p class="content">Абзац 2</p>
<ul>
<li>Элемент 1</li>
<li class="content">Элемент 2</li>
</ul>
<p class="content">Абзац 2</p>
<li class="content">Элемент 2</li>

Приведу решение сразу:

Код:
#<(p|li)\s+[^>]*?class\s*=\s*(['"])content\2[^>]*>((?:(?!</\1>).)*)</\1>#is
Я поменял регулярку под свои нужды вот таким образом:

Код:
#<div\s+[^>]*?class\s*=\s*(['"])content\2[^>]*>((?:(?!</\1>).)*)</\1>#is
Но она не работает...

Как данное решение сделать рабочим для ZP ?


html для тестирования:
Код:
<div class="no">
<div class="content">
<div class="no_no">
</div>
</div>
</div>
 
Последнее редактирование:

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Взять Innerhtml нужного дива и экшеном операции с текстом - удаление удалить все ненужное оттуда
 

GrandT

Client
Регистрация
23.07.2014
Сообщения
160
Благодарностей
64
Баллы
28
Взять Innerhtml нужного дива и экшеном операции с текстом - удаление удалить все ненужное оттуда
К сожалению, шаблон делается только на GET/POST запросах, без использования браузера.
Может есть у кого сниппет для данной задачи?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
ну простой регуляркой тут не вытащить думаю. если закрывающие теги других дивов есть внутри
нужно прикрутить htmlagilitypack или аналогичную либу и с ней работать
 

GrandT

Client
Регистрация
23.07.2014
Сообщения
160
Благодарностей
64
Баллы
28
ну простой регуляркой тут не вытащить думаю. если закрывающие теги других дивов есть внутри
нужно прикрутить htmlagilitypack или аналогичную либу и с ней работать
Эх, вот был бы встроенный экшен для этого - на поиск зацепок в html тратилось бы в 2-3 раза меньше времени. Указал id блока и получил нужный фрагмент. Тот же конструктор действий, только для поиска по тексту
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
вышеназванная библиотека такое может)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)