Здравствуйте, гость ( Вход | Регистрация )
ViGOur | Дата 18.8.2008, 10:30 |
Угу, заработало! Спасибо. | |
Tonal | Дата 18.8.2008, 8:36 |
Ага, проверил. Qt действительно не понимает конструкций +?, *? и ?? но при переключении во второй синтаксис все квантификаторы делаются "нежадными". Т.е. работает <form[^>]+>(.+)</form> + QRegExp::RegExp2. + setMinimal |
|
ViGOur | Дата 14.8.2008, 12:24 |
Тоже самое, сам глянь с помощью утилиты RegExp, которая находится в %qtdir%\examples\tools\regexp | |
Litkevich Yuriy | Дата 14.8.2008, 12:18 |
ViGOur, а если вместо (.+?) так ({.+}?) |
|
ViGOur | Дата 14.8.2008, 12:10 |
Неа, не идет, вот пример: В szData прочитанный HTML документ.Да и тулза не съедает тоже. |
|
Tonal | Дата 14.8.2008, 12:01 |
Там нужно 2 вариант синтаксиса включить: QRegExp::RegExp2 | |
ViGOur | Дата 14.8.2008, 8:58 |
Понял, я только начинаю вникать в регулярные выражения. Но в Qt'шной тулзе RegExp выражения (.+?) и (.*?) не работают. |
|
Tonal | Дата 14.8.2008, 8:06 |
но почему-то получаю данные до второго </form>, а не до первого.Поставь ? после * Это сделает повторитель "не жадным". "Жадный" повторитель захватывает сразу всё сколько может, а потом отдаёт если остаток выражения не совпадает. "Нежадный" наоборот, после захвата минимально возможного количества символов, отдаёт управление дальше, и если совпадений там нет, кушает следующий доступный. P.S. Кстати, изменение не проканают - у тебя между тегами form стоит ([^<>]*) - т.е. взять любую последовательность символов в которой не встречаются символы <> - т.е. при встрече первого же тега (а это скорее всего будет не </form> оно остановиться. И выражение обломается. Так что тебе нужно его заменить (как правильно написал Andrew Selivanov) на такое: (.+?) |
|
Andrew Selivanov | Дата 13.8.2008, 23:09 |
На Perl-e это делается так...
|
|
ViGOur | Дата 13.8.2008, 16:26 |
Есть HTML документ, в нем есть две формы (form). Мне нужно получить все, что внутри первого form, пишу выражение: но почему-то получаю данные до второго </form>, а не до первого.Как нужно составить регулярное выражение, чтобы получить данные только из первой формы. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 25.4.2024, 14:49 |