При парсинге сайта (bash.im) и при использовании компонента TRegExpr и компиляции программы под Windows все работает нормально:
procedure TForm1.Button22Click(Sender: TObject);
var
s: string;
regexpr: TRegExpr;
ss: TStringStream;
begin
ss := TStringStream.Create('', TEncoding.GetEncoding(1251));
try
IdHTTP1.Get('http://bash.im/', ss);
ss.Position := 0;
s := ss.DataString;
finally
ss.Free;
end;
regexpr := TRegExpr.Create;
try
regexpr.Expression :=
'class="date">(.*?)<.*?class="id">(.*?)<.*?class="text">(.*?)<';
if regexpr.Exec(s) then
repeat
mmoLetters.Lines.Add(regexpr.Match[1]);
mmoLetters.Lines.Add(regexpr.Match[2]);
mmoLetters.Lines.Add(regexpr.Match[3]);
until not regexpr.ExecNext;
finally
regexpr.Free
end;
end;
Но при компиляции приложения под Android, выдает ошибку...
Использую RegularExpressions из состава Delphi 10 Seattle:
uses
System.RegularExpressions
...
procedure TfrmMain.ParsingBashNew(URLToPars: string);
var
Matches: TMatchCollection;
RegExpr: TRegEx;
i: Integer;
RegularExpressString : string;
begin
mmoNew.Lines.Clear;
HTMLText := IdHTTP1.Get(URLToPars);
RegularExpressString := 'class="date">(.*?)<.*?class="id">(.*?)<.*?class="text">(.*?)<';
RegExpr := TRegEx.Create(RegularExpressString, [roIgnoreCase, roMultiLine]);
Matches := RegExpr.Matches(HTMLText);
if Matches.Count > 0 then
begin
mmoNew.BeginUpdate;
for i := 0 to Matches.Count -1 do
begin
mmoNew.Lines.Add(Matches.Item[i].Groups[1].Value);
mmoNew.Lines.Add(Matches.Item[i].Groups[2].Value);
mmoNew.Lines.Add(Matches.Item[i].Groups[3].Value);
mmoNew.Lines.Add('==============================');
end;
mmoNew.EndUpdate;
end;
end;
То же самое регулярное выражение на работает. В чем может быть загвоздка? (если отбросить последнюю составляющую регулярки - '.*?class="text">(.*?)<' - тоже все работает!)
Вопрос
HyperZen
Добрый день!
При парсинге сайта (bash.im) и при использовании компонента TRegExpr и компиляции программы под Windows все работает нормально:
Но при компиляции приложения под Android, выдает ошибку...
Использую RegularExpressions из состава Delphi 10 Seattle:
То же самое регулярное выражение на работает. В чем может быть загвоздка? (если отбросить последнюю составляющую регулярки - '.*?class="text">(.*?)<' - тоже все работает!)
Изменено пользователем Brovin YaroslavСсылка на комментарий
2 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.