Показать сообщение отдельно
  #7  
Старый 11.09.2012, 09:30
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

имхо для html нужен парсер, но регулярки всяко лучше, чем кусок хардкода

по сути решение занимает три строчки, ещё три вывод в memo, а всё
остальное – повторно используемый код
какие ещё нужны аргументы?

ps что бы писать повторно используемый код, тоже нужна голова

Код:
//(освобождений объектов нету)
uses PerlRegEx;

function scan(input, regexp: string; group: byte = 0): TStringList;
var
  reg: TPerlRegEx;
  found: boolean;
begin
  reg := TPerlRegEx.Create;
  reg.Subject := input;
  reg.RegEx   := regexp;

  result := TStringList.Create;

  found := reg.Match;
  while found do
  begin
    result.Add(reg.Groups[group]);
    found := reg.MatchAgain;
  end;
end;

function between(one, two: string): string;
begin
  result := format('%s(.*?)%s', [one, two]);
end;

procedure TForm1.doscanClick(Sender: TObject);
var
  one, two, three: TStringList; i: integer;
begin
  one := scan(input.Text, between('<b>Участников:</b>','из'), 1);
  two  := scan(input.Text, between('из', '</div>'), 1);
  three := scan(input.Text, between('</center><a href=', '><b>'), 1);

  output.Clear;
  for i := 0 to one.Count - 1 do
    output.Lines.add(format('%s * %s * %s', [one[i],two[i],three[i]]));
end;
__________________
>woweook<
Ответить с цитированием