 |
RegExpr - Кодировка. Нужна помощь. - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе |
13.06.2012, 14:48
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 04.11.2011
 Сообщений: 2
 Популярность: 220
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
RegExpr - Кодировка. Нужна помощь.
У меня возникла проблема с кодировкой в выражении RegExpr.
Мне нужно вытянуть имя например "example".
Пример:
Код:
S:=idHTTP1.Get('http://site.com/');
Reg.Expression:='<div class="name" value="Ваше имя:">(.*?)</div>';
// <div class="name" value="Ваше имя:">example</div>
if Reg.Exec(S) then Label1.Caption:=Reg.Match[1];
Например у сайта кодировка UTF8, при поиске данной строки он ее не находит, из-за того, что в строке имеются русский символы.
Т.е вместо "Ваше имя" он видит крякозябры, а не "Ваше имя".
Конечно можно сделать так:
Код:
S:=idHTTP1.Get('http://site.com/');
Reg.Expression:='<div class="name" value="(.?*)">(.*?)</div>';
// <div class="name" value="Ваше имя:">example</div>
if Reg.Exec(S) then Label1.Caption:=Reg.Match[2];
Он выводит имя "example", но строка может повторяться несколько раз.
Т.е:
Код:
S:=idHTTP1.Get('http://site.com/');
Reg.Expression:='<div class="name" value="(.?*)">(.*?)</div>';
// <div class="name" value="Ваше Имя">example</div>
if Reg.Exec(S) then Label1.Caption:=Reg.Match[2];
Reg.Expression:='<div class="name" value="(.?*)">(.*?)</div>';
// <div class="name" value="Ваша Фамилия:">apple</div>
if Reg.Exec(S) then Label2.Caption:=Reg.Match[2];
Получается, что он ищет одну и туже строку, и выведет самую 1 строку в оба label'a.
Label1.Caption = example
Label 2.Caption = example
Поэтому в переменной "value" написать "Ваше имя" или "Ваша Фамилия" регулярным выражением не получится.
Поэтому надо задать как-то кодировку словам "Ваше имя" и "Ваша Фамилия". Иначе будет искать крякозябры этих слов, которых там нету.
________________
-=DangerousSs=-
Последний раз редактировалось DangerousSs; 13.06.2012 в 16:39.
|
|
|
13.06.2012, 19:33
|
#2
|
|
|
|
Лейтенант-командор
|
 Регистрация: 12.08.2010
 Сообщений: 727
 Популярность: 30569
 Золото Zhyk.Ru: 1
 Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
|
Re: RegExpr - Кодировка. Нужна помощь.
1) Регулярки ЗЛО
2) UTF8Decode({тут ответ сервера в string}) превращает кракозябры в русские символы 
3) Регулярки ЗЛО
4) Регулярки ЗЛО
5) Регулярки ЗЛО
6) Регулярки ЗЛО
...
n) Регулярки ЗЛО
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Кошельки: 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.
|
|
|
13.06.2012, 21:23
|
#3
|
|
|
|
Разведчик
|
 Регистрация: 04.11.2011
 Сообщений: 2
 Популярность: 220
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: RegExpr - Кодировка. Нужна помощь.
________________
-=DangerousSs=-
|
|
|
13.06.2012, 21:28
|
#4
|
|
|
|
Рыцарь
|
 Регистрация: 12.04.2009
 Сообщений: 394
 Популярность: 47903
 Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
|
Re: RegExpr - Кодировка. Нужна помощь.
Советую воспользоваться возможностями класса TEncoding.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
13.06.2012, 22:19
|
#5
|
|
|
|
Разведчик
|
 Регистрация: 04.11.2011
 Сообщений: 2
 Популярность: 220
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: RegExpr - Кодировка. Нужна помощь.
________________
-=DangerousSs=-
|
|
|
13.06.2012, 23:36
|
#6
|
|
|
|
Лейтенант-командор
|
 Регистрация: 12.08.2010
 Сообщений: 727
 Популярность: 30569
 Золото Zhyk.Ru: 1
 Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
|
Re: RegExpr - Кодировка. Нужна помощь.
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Кошельки: 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.
|
|
|
14.06.2012, 09:21
|
#7
|
|
|
|
Разведчик
|
 Регистрация: 04.11.2011
 Сообщений: 2
 Популярность: 220
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: RegExpr - Кодировка. Нужна помощь.
 |
Цитата: |
 |
|
|
|
|
|
Не, что-то не помогло, но за то решил проблему по-другому. Но спасибо и на этом.
Код:
S:=idHTTP1.Get('http://site.com/');
chr:=UTF8Encode('Ваше имя:');
Reg.Expression:='<div class="name" value="'+chr+'">(.*?)</div>';
// <div class="name" value="Ваше имя:">example</div>
if Reg.Exec(S) then Label1.Caption:=Reg.Match[1];
________________
-=DangerousSs=-
|
|
|
14.06.2012, 09:24
|
#8
|
|
|
|
Лейтенант-командор
|
 Регистрация: 12.08.2010
 Сообщений: 727
 Популярность: 30569
 Золото Zhyk.Ru: 1
 Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
|
Re: RegExpr - Кодировка. Нужна помощь.
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Кошельки: 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.
|
|
|
14.06.2012, 09:32
|
#9
|
|
|
|
Разведчик
|
 Регистрация: 04.11.2011
 Сообщений: 2
 Популярность: 220
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: RegExpr - Кодировка. Нужна помощь.
________________
-=DangerousSs=-
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 00:57.
|
 |