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

  • Автор темы Автор темы GrandT
  • Дата начала Дата начала

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>
 
Последнее редактирование:
Взять Innerhtml нужного дива и экшеном операции с текстом - удаление удалить все ненужное оттуда
 
Взять Innerhtml нужного дива и экшеном операции с текстом - удаление удалить все ненужное оттуда
К сожалению, шаблон делается только на GET/POST запросах, без использования браузера.
Может есть у кого сниппет для данной задачи?
 
ну простой регуляркой тут не вытащить думаю. если закрывающие теги других дивов есть внутри
нужно прикрутить htmlagilitypack или аналогичную либу и с ней работать
 
ну простой регуляркой тут не вытащить думаю. если закрывающие теги других дивов есть внутри
нужно прикрутить htmlagilitypack или аналогичную либу и с ней работать
Эх, вот был бы встроенный экшен для этого - на поиск зацепок в html тратилось бы в 2-3 раза меньше времени. Указал id блока и получил нужный фрагмент. Тот же конструктор действий, только для поиска по тексту
 
вышеназванная библиотека такое может)
 

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