crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Регулярное выражение от <form...> до первого </form>, не могу составить
ViGOur
  опции профиля:
сообщение 13.8.2008, 16:26
Сообщение #1


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Есть HTML документ, в нем есть две формы (form). Мне нужно получить все, что внутри первого form, пишу выражение:
<form[^>]+>([^<>]*)</form>
но почему-то получаю данные до второго </form>, а не до первого.
Как нужно составить регулярное выражение, чтобы получить данные только из первой формы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Tonal
  опции профиля:
сообщение 14.8.2008, 8:06
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Цитата(ViGOur @ 13.8.2008, 20:26) *
<form[^>]+>([^<>]*)</form>
но почему-то получаю данные до второго </form>, а не до первого.

Поставь ? после *
Это сделает повторитель "не жадным".
"Жадный" повторитель захватывает сразу всё сколько может, а потом отдаёт если остаток выражения не совпадает.
"Нежадный" наоборот, после захвата минимально возможного количества символов, отдаёт управление дальше, и если совпадений там нет, кушает следующий доступный. :)

P.S. Кстати, изменение не проканают - у тебя между тегами form стоит ([^<>]*) - т.е. взять любую последовательность символов в которой не встречаются символы <> - т.е. при встрече первого же тега (а это скорее всего будет не </form> оно остановиться. И выражение обломается.
Так что тебе нужно его заменить (как правильно написал Andrew Selivanov) на такое: (.+?)

Сообщение отредактировал Tonal - 14.8.2008, 8:17
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.11.2024, 23:22