![]() |
Модераторы: ginnie |
![]() ![]() ![]() |
|
barbiturat |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 24.12.2009 Репутация: нет Всего: нет |
Как в приведенном примере найти <div class="someDiv"> со всем его содержимым при помощи одного регулярного выражения? Это вообще возможно?
Это сообщение отредактировал(а) barbiturat - 28.12.2009, 15:11 |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 1 Всего: 31 |
Ага, возможно:
P.S. Да, такая регулярка поддерживает только xml - стиль - т.е. когда теги либо парные либо самозакрывающиеся. Распарсить старый html типа <b><i></b></i> или <br> не получится. Это сообщение отредактировал(а) sir_nuf_nuf - 28.12.2009, 16:31 |
|||
|
||||
n4n0bit |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 19.6.2008 Репутация: нет Всего: 1 |
||||
|
||||
barbiturat |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 24.12.2009 Репутация: нет Всего: нет |
sir_nuf_nuf, спасибо! Дома попробую.
А что значит (?1)? Добавлено через 4 минуты и 20 секунд n4n0bit, мне это нужно для использования не на perl, а на JavaScript. К сожалению, конструкции RegExp на JavaScript-форумах обсуждаются крайне редко, вот и запостил вопрос сюда ![]() |
|||
|
||||
DurRandir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 335 Регистрация: 27.9.2009 Репутация: 2 Всего: 17 |
(?1) - это рекурсивный матчинг внутри регулярки (матчит часть этого же самого регулярного выражения рекурсивно, для произвольной вложенности внутренних тегов). Без этого расширения (классическими регулярками) эта задача нерешаема.
Это сообщение отредактировал(а) DurRandir - 29.12.2009, 09:01 |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 1 Всего: 31 |
А сразу написать было не судьба ? (?1) - это означает, что на данном месте нужно опять начать применять кусок регулярки начинаемый в первой (1) группе (круглой скобочек). Рекурсивная регулярка - нововведение perl, в JavaScript такого нет. Зато в JS все решается вообще без регулярок:
Правда, здесь только содержимое этого дива.. ну да ладно. Это сообщение отредактировал(а) sir_nuf_nuf - 29.12.2009, 12:29 |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: нет Всего: 50 |
В perl 5.10? То то я смотрю, незнакомая конструкция. А ведь логично и изящно! В старом perl рекурсия регэкспов реализовывалась иначе. Пора переходить на 5.10... |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 1 Всего: 31 |
Ага.. с удивлением обнаружил, что только в 5.10. В 5.8.8 - нет. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |