Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

RegExpr - Кодировка. Нужна помощь.

-

Вопросы и ответы, обсуждения

- Ваши вопросы по Pascal/Delphi только в данном разделе

Закрытая тема
 
Опции темы
Старый 13.06.2012, 14:48   #1
 Разведчик
Аватар для DangerousSs
 
DangerousSs скоро будет известенDangerousSs скоро будет известенDangerousSs скоро будет известен
Регистрация: 04.11.2011
Сообщений: 2
Популярность: 220
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Отправить сообщение для DangerousSs с помощью Skype™
 
По умолчанию 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
Label2.Caption = example

Поэтому в переменной "value" написать "Ваше имя" или "Ваша Фамилия" регулярным выражением не получится.
Поэтому надо задать как-то кодировку словам "Ваше имя" и "Ваша Фамилия". Иначе будет искать крякозябры этих слов, которых там нету.
________________
-=DangerousSs=-

Последний раз редактировалось DangerousSs; 13.06.2012 в 16:39.
 
Старый 13.06.2012, 19:33   #2
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию 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
 Разведчик
Аватар для DangerousSs
 
DangerousSs скоро будет известенDangerousSs скоро будет известенDangerousSs скоро будет известен
Регистрация: 04.11.2011
Сообщений: 2
Популярность: 220
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Отправить сообщение для DangerousSs с помощью Skype™
 
По умолчанию Re: RegExpr - Кодировка. Нужна помощь.

Цитата:
Сообщение от VeTaL_UAПосмотреть сообщение
1) Регулярки ЗЛО
2) UTF8Decode({тут ответ сервера в string}) превращает кракозябры в русские символы
3) Регулярки ЗЛО
4) Регулярки ЗЛО
5) Регулярки ЗЛО
6) Регулярки ЗЛО
...
n) Регулярки ЗЛО

А что тогда предложите?) только не Copy,pos
________________
-=DangerousSs=-
 
Старый 13.06.2012, 21:28   #4
NoItemName
 Рыцарь
Аватар для J-Fobos
 
J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(
Регистрация: 12.04.2009
Сообщений: 394
Популярность: 47903
Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
 
По умолчанию Re: RegExpr - Кодировка. Нужна помощь.

Советую воспользоваться возможностями класса TEncoding.
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
 
Старый 13.06.2012, 22:19   #5
 Разведчик
Аватар для DangerousSs
 
DangerousSs скоро будет известенDangerousSs скоро будет известенDangerousSs скоро будет известен
Регистрация: 04.11.2011
Сообщений: 2
Популярность: 220
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Отправить сообщение для DangerousSs с помощью Skype™
 
По умолчанию Re: RegExpr - Кодировка. Нужна помощь.

Цитата:
Сообщение от VeTaL_UAПосмотреть сообщение
1) Регулярки ЗЛО
2) UTF8Decode({тут ответ сервера в string}) превращает кракозябры в русские символы
3) Регулярки ЗЛО
4) Регулярки ЗЛО
5) Регулярки ЗЛО
6) Регулярки ЗЛО
...
n) Регулярки ЗЛО

Кстати декодингом я пробовал, не получалось. Рассмотрю еще раз.
________________
-=DangerousSs=-
 
Старый 13.06.2012, 23:36   #6
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: RegExpr - Кодировка. Нужна помощь.

Цитата:
Сообщение от DangerousSsПосмотреть сообщение
А что тогда предложите?) только не Copy,pos

Как раз их и предложу
Цитата:
Сообщение от J-FobosПосмотреть сообщение
Советую воспользоваться возможностями класса TEncoding.

В олд версиях делфи его нет, а автор, скорее всего, именно такой пользуется.
Цитата:
Сообщение от DangerousSsПосмотреть сообщение
Кстати декодингом я пробовал, не получалось.

Код:
var
s:string
HTTP:TIdHTTP;
begin
HTTP:=TIdHTTP.Create(nil);
s:=HTTP.Get('http://blabla.com/');
{в s кракозябры вместо русских букв}
s:=UTF8Decode(s);
{в s русские буквы}
end;
Проще же простого...
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 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
 Разведчик
Аватар для DangerousSs
 
DangerousSs скоро будет известенDangerousSs скоро будет известенDangerousSs скоро будет известен
Регистрация: 04.11.2011
Сообщений: 2
Популярность: 220
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Отправить сообщение для DangerousSs с помощью Skype™
 
По умолчанию Re: RegExpr - Кодировка. Нужна помощь.

Цитата:
Сообщение от VeTaL_UAПосмотреть сообщение
Как раз их и предложу

В олд версиях делфи его нет, а автор, скорее всего, именно такой пользуется.

Код:
var
s:string
HTTP:TIdHTTP;
begin
HTTP:=TIdHTTP.Create(nil);
s:=HTTP.Get('http://blabla.com/');
{в s кракозябры вместо русских букв}
s:=UTF8Decode(s);
{в s русские буквы}
end;
Проще же простого...

Не, что-то не помогло, но за то решил проблему по-другому. Но спасибо и на этом.
Код:
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
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: RegExpr - Кодировка. Нужна помощь.

Цитата:
Сообщение от DangerousSsПосмотреть сообщение
е, что-то не помогло, но за то решил проблему по-другому.

. Сори, перепутал Encode и Decode
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 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
 Разведчик
Аватар для DangerousSs
 
DangerousSs скоро будет известенDangerousSs скоро будет известенDangerousSs скоро будет известен
Регистрация: 04.11.2011
Сообщений: 2
Популярность: 220
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Отправить сообщение для DangerousSs с помощью Skype™
 
По умолчанию Re: RegExpr - Кодировка. Нужна помощь.

Цитата:
Сообщение от VeTaL_UAПосмотреть сообщение
. Сори, перепутал Encode и Decode

Да ладно уж
Можешь закрыть тему.
________________
-=DangerousSs=-
 
Закрытая тема


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] RegExpr (парс ссылок) *Хalyava* Вопросы и ответы, обсуждения 7 05.02.2012 11:28
[Помогите!] RegEXpr АнтиАмерика Вопросы и ответы, обсуждения 1 11.09.2011 18:10
[Помогите!] Кодировка в СЕ LeonBest Общение и обсуждение, архив Point Blank 13 17.05.2010 17:48
Нужна помощь по приложению Город(помощь оплачу) legorii Баги игр ВКонтакте 1 10.03.2010 18:37
[Помогите!] Нужна помощь! Нужна аватарка! Flapes Треп 40 28.12.2009 21:07

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 19:35.

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net