Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос по регулярному выражению, (кратко не сформулировать) 
:(
    Опции темы
Forza
Дата 23.8.2008, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.9.2004

Репутация: нет
Всего: 2



Не нашёл специального форума по регулярным выражениям, поэтому пишу сюда.

Предположим, есть следующий ХТМЛ-код:
Код

aaa
<b>bbb</b>
ccc
<form>
ddd
<b>eee</b>
fff
<b>ggg</b>
</form>
hhh
<b>iii</b>


С помощью регэкспов надо достать из него жирные символы, находящиеся внутри тэга формы, т.е. в нашем случае это будет eee и ggg. Считаем, что такая форма в тексте одна.
Пока я смог это сделать только с помощью двух итераций с регэкспами:
Код

my $rez1 = ($content =~ /<form>(.+?)<\/form>/sg)[0]; #извлекаем всё содержимое формы как один скаляр
my @rez2 = ($rez1 =~ /<b>(.+?)<\/b>/sg); #из полученного выше извлекаем массив жирных подстрок


А можно ли это сделать, используя регэксп один раз? Пока в голову пришло только нижеследующее: 
Код

my @rez3 = ($content =~ /<form>.+?<b>(.+?)<\/b>.+?<\/form>/sg);


Логика была такая: а дай-ка мне все символы, которые окружены тэгами bold, а также где-то дальше от них есть и тэги открытия/закрытия формы. Но оно выдаёт только eee. Наверное, дело в том, что для eee и ggg найденные результаты пересекались бы.

Look ahead/behind использовать нельзя, т.к. они не поддерживают переменную длину.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Технологии: Разные | Следующая тема »


 




[ Время генерации скрипта: 0.0367 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.