|
как парсить reg expr ? - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе |
27.06.2012, 16:24
|
#1
|
|
|
|
Сержант
|
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
|
как парсить reg expr ?
У меня процедура парса страницы к примеру я хочу с сайта zhyk.ru спарсить надпись 'Реклама' и 'Привет друг'.
как спарсить сразу 2 значения ?
пишу такой код парса:
Код:
c:=form1.idhttp1.get('http://zhyk.ru');
RegExp := TRegExpr.Create;
RegExp.InputString :=c;
RegExp.Expression := '<br />(.*?)<br /> ';
if RegExp.Exec then
begin
memo1.Lines.Add(RegExp.Match[1]);
RegExp.Free;
а как сразу спарсить и Рекламу и Привет друг ?
|
|
|
27.06.2012, 17:54
|
#2
|
|
|
|
Разведчик
|
Регистрация: 18.10.2011
Сообщений: 5
Популярность: 16
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: как парсить reg expr ?
регулярку длиннее сделай, и бери reg.match[1] и reg.match[2], либо в виде двух отдельных регулярок
|
|
|
27.06.2012, 18:00
|
#3
|
|
|
|
Разведчик
|
Регистрация: 19.02.2012
Сообщений: 36
Популярность: 447
Сказал(а) спасибо: 25
Поблагодарили 50 раз(а) в 40 сообщениях
|
Re: как парсить reg expr ?
|
|
|
27.06.2012, 18:06
|
#4
|
|
|
|
Сержант
|
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
|
Re: как парсить reg expr ?
|
|
|
27.06.2012, 20:08
|
#5
|
|
|
|
Разведчик
|
Регистрация: 18.10.2011
Сообщений: 5
Популярность: 16
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: как парсить reg expr ?
|
|
|
27.06.2012, 20:57
|
#6
|
|
|
|
Лейтенант-командор
|
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
|
Re: как парсить reg expr ?
Copy, Pos, Delete круче регулярок
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.
|
|
|
27.06.2012, 21:25
|
#7
|
|
|
|
Сержант
|
Регистрация: 07.05.2012
Сообщений: 117
Популярность: 1781
Сказал(а) спасибо: 16
Поблагодарили 82 раз(а) в 44 сообщениях
|
Re: как парсить reg expr ?
|
|
|
27.06.2012, 22:22
|
#8
|
|
|
|
Рыцарь-защитник
|
Регистрация: 14.06.2010
Сообщений: 584
Популярность: 6626
Сказал(а) спасибо: 86
Поблагодарили 847 раз(а) в 266 сообщениях
|
Re: как парсить reg expr ?
|
Цитата: |
|
|
|
|
Сообщение от [Na`Vi]DendI |
|
|
|
|
|
|
|
пробоавал делать регулярку длиннее не выходит не парсит(
2 отдельные нет смысла делать по скольку спарсить нужно будет для одного проекта около 30 значений 30 отдельных нет смысла делать(
|
|
|
|
|
|
советую для теста использовать regexbuddy, великолепная прога для теста регулярок
кол-во значений парсится группами, группа в регулярке обозначается скобками.
в твоем варианте
Код:
RegExp.Expression := '<br />(.*?)<br /> ';
в RegExp.Match[0] будет полностью совпадшее с регуляркой значение
в RegExp.Match[1] будет полное совпадение, но только без <br /> с обоих сторон
0 - полное совпадение
1-n = номера групп
но Веталь прав. кпд гораздо быстрее работают и жрут меньше ЦП и ОЗУ компа
Последний раз редактировалось VeTaL_UA; 28.06.2012 в 00:35.
Причина: негоже моё имя с маленькой писать
|
|
|
29.06.2012, 12:01
|
#9
|
|
|
|
Сержант
|
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
|
Re: как парсить reg expr ?
Всем спасибо..
теперь новый вопрос,есть к примеру 2 такие строки:
Код:
<td class="values">2.000</td>
<td class="values">4.000</td>
Мне нужно спарсить числа,ети числа естественно меняются)
как поступить ?
|
|
|
29.06.2012, 13:00
|
#10
|
|
|
|
Разведчик
|
Регистрация: 18.10.2011
Сообщений: 5
Популярность: 16
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: как парсить reg expr ?
тебе нужно спарсить именно несколько таких чисел?
reg.expression:='class="values">(.*?)</td>';
if reg.exec(переменная где находится этот текст) then begin
repeat
memo1.lines.add(reg.match[1]);
until not reg.execNext;
end;
|
|
|
29.06.2012, 13:13
|
#11
|
|
|
|
Сержант
|
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
|
Re: как парсить reg expr ?
|
|
|
29.06.2012, 13:22
|
#12
|
|
|
|
Разведчик
|
Регистрация: 18.10.2011
Сообщений: 5
Популярность: 16
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: как парсить reg expr ?
|
|
|
29.06.2012, 13:41
|
#13
|
|
|
|
Сержант
|
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
|
Re: как парсить reg expr ?
|
|
|
29.06.2012, 16:19
|
#14
|
|
|
|
Разведчик
|
Регистрация: 18.10.2011
Сообщений: 5
Популярность: 16
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
|
Re: как парсить reg expr ?
|
|
|
29.06.2012, 18:04
|
#15
|
|
|
|
Сержант
|
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
|
Re: как парсить reg expr ?
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 11:17.
|
|