Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Albina1994
7 / 7 / 1
Регистрация: 07.08.2013
Сообщений: 105
1

Спарсить текст

07.08.2015, 16:03. Просмотров 410. Ответов 8
Метки нет (Все метки)

Добрый день, уважаемые форумчане.
Не могу разобраться, как вытащить информацию из текста.
Есть файл с таким содержимым
XML
1
2
Leg="0" A="69.000000" B="26.000000" Port="0.300000"
Leg="0" A="76.000000" B="36.457643" Port="0.300000"
Не знаю, что для этого лучше использовать регулярное выражение или через Pos.

Из этого файла нужно только эти значения:
69.000000 26.000000
76.000000 36.457643

которые нужно сохранить в мемо.

Пробовала вот такой код

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
  RegExp: TRegExpr;
  S, xText: String;
begin
 inherited;
 xText:= Memo1.Text;
  S:= '';
  RegExp:= TRegExpr.Create;
  RegExp.Expression:= 'A="(.*?)" Port="';
 if RegExp.Exec(xText) then
 repeat
  S:= S + Trim(RegExp.Match[1]) + #13;
  Memo2.Lines.Text:= S;
 until not RegExp.ExecNext;
  RegExp.Free;
end;
Но он естественно сохраняет всё что между заданными параметрами...

Подскажите советом, как сделать.

Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2015, 16:03
Ответы с готовыми решениями:

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

Спарсить текст ссылки
Помогите спарсить ссылку. ...

Спарсить текст с страниц сайта
Есть ссылки, они записаны в memo. нужно пройтись по каждой и с каждой...

Как спарсить текст такой?
У меня есть код с Get запроса и надо спарсить все слова за критереем: все буквы...

Из строки спарсить несколько раз текст
смотрите у меня есть некий текст в memo1, например "1краб2<1краб2", мне нужно...

8
mmm_corp
74 / 69 / 22
Регистрация: 30.05.2015
Сообщений: 487
07.08.2015, 17:22 2
на выходе получите что нужно)
Delphi
1
2
3
4
5
6
7
s:='Leg="0" A="69.000000" B="26.000000" Port="0.300000"';
 
s:=ReplaceStr(s, '"', '');
s:=ReplaceStr(s, 'Leg=', '');
s:=ReplaceStr(s, 'A=', '');
s:=ReplaceStr(s, 'B=', '');
s:=ReplaceStr(s, 'Port=', '');
0
Albina1994
7 / 7 / 1
Регистрация: 07.08.2013
Сообщений: 105
07.08.2015, 17:30  [ТС] 3
Спасибо за ответ...
Модуль ругается на ReplaceStr.

А как действовать, если строк много и нужно искать только те значения, которые необходимы, а остальное удалить?
0
Григорий34
Заблокирован
07.08.2015, 17:41 4
Albina1994, во первых команда другая немного, вот пример
Заменить все символы "w" в строке на "z" - s:=StringReplace(s,'w','z',[rfReplaceAll, rfIgnoreCase]); // var s:string;

Во вторых есть функция парсинга
Delphi
1
2
3
4
5
6
7
8
9
10
11
function Pars(const T_, _T, Text : string): string;
var a, b:integer;
begin
Result := '';
if (T_='') or (Text='') or (_T='') then Exit;
a:=pos(T_, Text);
if a=0 then exit;
b:=posEx(_T,Text,a);
if b>0 then
Result:=Copy(Text, a+Length(T_), b-a-Length(T_));
end;
0
Albina1994
7 / 7 / 1
Регистрация: 07.08.2013
Сообщений: 105
07.08.2015, 17:51  [ТС] 5
Григорий34, Спасибо. У вас есть применение функции на кнопку?
1
Григорий34
Заблокирован
07.08.2015, 18:00 6
Albina1994,
ShowMessage(Pars('A="', '" ', s)); // где s переменная содержащая текст строки
0
Albina1994
7 / 7 / 1
Регистрация: 07.08.2013
Сообщений: 105
07.08.2015, 18:01  [ТС] 7
А, всё разобралась.

А как можно сделать чтобы в мемо через пробел добавлялось ещё одно значение как показано в примере?
69.000000 26.000000

Сейчас у меня выдается списком таким
69.000000
26.000000
0
Григорий34
Заблокирован
07.08.2015, 18:14 8
+' '+тут ваша функция парсинга или что там у вас на еще одно значение (параметры поменять)

Добавлено через 56 секунд
ShowMessage(Pars('A="', '" ', s)+' '+Pars('B="', '" ', s)); как то так )
1
Albina1994
7 / 7 / 1
Регистрация: 07.08.2013
Сообщений: 105
07.08.2015, 18:20  [ТС] 9
Григорий34, Спасибо! Работает
0
07.08.2015, 18:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2015, 18:20

Создать обработчик файлов и спарсить определенный текст
необходимо создать обработчик файлов и спарсить определенный текст пример:...

Прочесть текст с файла и спарсить с него ссылки
Здравствуйте, пишу для себя одну софтинку, но возникла проблема на первых...

Спарсить текст между тегами <text> и </text>
Я использую Yandex api для перевода текста. Ответ приходит приходит такого...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru