Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 29.10.2011
Сообщений: 20

Спарсить предложение

03.08.2012, 09:08. Показов 1605. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется кусок кода:

<div id="text_history" class="fliess10px-white scrollbars"><p>2012-08-03 07:01:07<br />
Получен бонус за вход (с 5-го дня).<br />
<br />
2012-08-02 17:04:28<br />
Получен бонус за вход (с 5-го дня).<br />
<br />
2012-08-02 17:04:28<br />
Получен бонус за вход (с 5-го дня).<br />
<br />
2012-08-01 10:01:52<br />
Игрок ?CHAMPION? (MMO) уничтожил тебя.<br />
<br />
2012-08-01 10:01:52<br />
Игрок ?ололо? (MMO) уничтожил тебя.<br />
<br />
2012-08-01 10:01:52<br />
Корабль отремонтирован.<br />
</p></div>


Строки выделенные красным, нужно спарсить в переменную и поместить в мемо.
Регулярки - плохо, а как с помощью copy,pos не знаю. Помогите новичку.
Заранее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.08.2012, 09:08
Ответы с готовыми решениями:

Спарсить регуляркой
Помогите спарсить регуляркой слово sa-mp-442.png между тегом &lt;a&gt; &lt;/a&gt; &lt;a...

как спарсить?
Как спарсить в ответе от сервера слово с символом '? '

Спарсить текст
Добрый день, уважаемые форумчане. Не могу разобраться, как вытащить информацию из текста. Есть файл с таким содержимым ...

7
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
03.08.2012, 09:22
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Button1Click(Sender: TObject);
var p: TPregArray;
begin
  if preg.match_all(Edit1.Text,memo1.Text,p) then begin
    memo2.Text:=p[1].Text;
    p.free;
  end;
end;
http://jqbook.narod.ru/delphi/preg.htm
Миниатюры
Спарсить предложение  
Вложения
Тип файла: zip цуцуц.zip (280.0 Кб, 12 просмотров)
1
0 / 0 / 0
Регистрация: 29.10.2011
Сообщений: 20
03.08.2012, 09:24  [ТС]
Цитата Сообщение от Alex_pac Посмотреть сообщение
procedure TForm1.Button1Click(Sender: TObject);
var p: TPregArray;
begin
* if preg.match_all(Edit1.Text,memo1.Text,p) then begin
* * memo2.Text:=p[1].Text;
* * p.free;
* end;
end;
Спасибо большое, но я регулярки вообще не знаю
Прокомментируйте пожалуйста код, постараюсь понять его
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
03.08.2012, 09:26
Пусть этот код хранится в текстовом файле. Тогда так. Понял что точка не входит в переменную.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.Button1Click(Sender: TObject);
var f:textfile;
    s:shortstring;
    a:array of shortstring;
    n:integer;
begin
if OpenDialog1.Execute then
assignfile(f,OpenDialog1.FileName);
reset(f);
n:=0;
while not eof(f) do
 begin
  readln(f,s);
  if copy(s,1,5)='Игрок' then
   begin
    n:=n+1;
    setlength(a,n);
    a[n-1]:=copy(s,1,pos('.',s));//сохраняем в переменную массив
    Memo1.Lines.Add(a[n-1]);//выводим в Мемо
   end;
 end;
end;
1
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
03.08.2012, 09:27
Цитата Сообщение от jeka-22 Посмотреть сообщение
регулярки вообще не знаю
самое время учить

можете начать не с Delphi а с php или JavaScript регулярок.
1
0 / 0 / 0
Регистрация: 29.10.2011
Сообщений: 20
03.08.2012, 10:30  [ТС]
Alex_pac,
После запуска проекта в делфи, перестает работать

Checking project dependencies...
Compiling Project1.dproj (Debug configuration)
[DCC Warning] RegExpr.pas(2299): W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
[DCC Warning] RegExpr.pas(3681): W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
[DCC Hint] RegExpr_preg.pas(63): H2077 Value assigned to 'Preg.match' never used
[DCC Hint] RegExpr_preg.pas(72): H2164 Variable 'r' is declared but never used in 'Preg.match_all'
Success
Elapsed time: 00:00:00.4

Добавлено через 49 минут
Получился такой код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.Timer2Timer(Sender: TObject);
var vrag:string;
s,s1:string;
Http  : TidHttp;
Data  : TStringList;
var p: TPregArray;
begin
HTTP := TIdHTTP.Create(nil); // HTTP
HTTP.HandleRedirects := True;
application.ProcessMessages;
// Чтобы не выдавало ошибку 302, в Delphi 2010 не важно
HTTP.AllowCookies := True;
HTTP.request.useragent :='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
HTTP.CookieManager := IdCookieManager1;
Http := TIdHTTP.Create(Self);
application.ProcessMessages;
S:=idhttp1.get('http://'+sedit2.Text+'.darkorbit.bigpoint.com/indexInternal.es?action=internalStart&dosid='+sedit1.Text); // авторизация
application.ProcessMessages;
if preg.match_all('/(игрок.+?)<br/i',s,p) then begin
smemo1.lines.add (p[1].Text); // в мемо ничего не появляется
p.free;
end;
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
03.08.2012, 11:20
Как использовать Unicode

TRegExpr теперь поддерживает работу с UniCode.

Обратите внимание, что этот режим практически неоптимизирован и работает чрезвычайно медленно (по сравнению со стандартным режимом).
Используйте его только если Вам действительно не обойтись без UniCode (а лучше примите участие в разработке TRegExpr и оптимизируйте UniCode-режим).

Чтобы переключить TRegExpr на работу с unicode уберите '.' из {.$DEFINE UniCode} в файле regexpr.pas.
Все строки после этого будут восприниматься как WideString.
http://regexpstudio.com/RU/TRe... de_support

так что лучше приводи кодировку в ANSI функцией UTF8toANSI()

и только потом отправляй на обработку регулярку
0
0 / 0 / 0
Регистрация: 29.10.2011
Сообщений: 20
03.08.2012, 11:36  [ТС]
Цитата Сообщение от Alex_pac Посмотреть сообщение
так что лучше приводи кодировку в ANSI функцией UTF8toANSI()
и только потом отправляй на обработку регулярку
Попытался, но в по - прежнему в мемо ничего не появляется
Вот такой код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm1.Timer2Timer(Sender: TObject);
var vrag:string;
s,s1:string;
Http  : TidHttp;
Data  : TStringList;
var p: TPregArray;
begin
HTTP := TIdHTTP.Create(nil); // HTTP
HTTP.HandleRedirects := True;
application.ProcessMessages;
// Чтобы не выдавало ошибку 302, в Delphi 2010 не важно
HTTP.AllowCookies := True;
HTTP.request.useragent :='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
HTTP.CookieManager := IdCookieManager1;
Http := TIdHTTP.Create(Self);
application.ProcessMessages;
S:=idhttp1.get('http://'+sedit2.Text+'.darkorbit.bigpoint.com/indexInternal.es?action=internalStart&dosid='+sedit1.Text);
application.ProcessMessages;
UTF8toANSI(s);
if preg.match_all('/(игрок.+?)<br/i',s,p) then begin
    // [url]http://jqbook.narod.ru/delphi/preg.htm[/url]
    smemo1.lines.add   (p[1].Text);
    p.free;
  end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.08.2012, 11:36
Помогаю со студенческими работами здесь

Как спарсить?
Всем привет) есть такой код на сайте &lt;option value=&quot;&quot;&gt;year&lt;/option&gt; &lt;option value=&quot;2014&quot;...

Delphi как спарсить?
Помогите спарсить! Я нашел на вашем сайте код: function FindID(strB,strE,str:string):string; var b,e:integer; begin ...

Как спарсить токен
Как правильно спарсить токен в делфи? Пробовал так HTTP.Headers.Clear; HTTP.HTTPMethod('GET', 'sitename.ru'); ...

Как спарсить JSon?
Нужно из строки {&quot;data&quot;:{&quot;uid&quot;:1000000,&quot;account&quot;:&quot;admin&quot;,&quot;sex&quot;:1,&quot;nick&quot;:&quot;Имя&quot;,&quot;credit&quot;:0,&quot;jifen&quot;:0},&quot;error&quot;:null,&quot;code&quot;:200} Кто...

Спарсить текст с задержкой
Вот есть сайт для проверки или оценки стоимости сайтов, форумов. Приходится ждать время калькуляции сайта. Как определить это время (для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru