TPerlRegEx Delphi 2010

govnoproger.ru > Delphi > TPerlRegEx Delphi 2010

Regexpr отказался работать на 2010 дельфи поэтому пришлось искать замену. Выбор пал на TPerlRegEx.В ходе ковыряний была проблема — непонятно как получать группы. Гуглил часов 6 и мягко говоря заёбся. Суть оказывается вот в чем: Есть Tperlregexp вышедший в 2009 году, но есть и апдейт к нему вышедший в сентябре этого года. Гемор заключается в том что вся документация в нете идет на старую версию). Поэтому выкладываю код с двугрупной регуляркой. В idhttp включите редирект чтоб пахало.


var
  str:string;
  regexp : TPerlRegEx;
  regres:Tstrings;
 GroupIndex:Integer;
begin

regexp:=TperlregEx.Create();
regres:=Tstringlist.Create;

     str:=mainform.IdHTTP1.Get('http://google.ru/');

  regexp.RegEx:='<a href=[^>]+>(.+)(<\/a>)';
  regexp.Subject:=str;

  if regexp.Match then
    begin
      repeat
        for GroupIndex := 0 to Regexp.GroupCount do
        regres.Add(Regexp.Groups[GroupIndex]);
      until not regexp.MatchAgain;
    end;

    mainform.Memo1.Text:=regres.Text;

после выполнения в мемо вылезет текст

<a href="http://mail.google.com/mail/?hl=ru&tab=wm" class=gb1>Gmail</a> <a href="http://www.google.ru/intl/ru/options/" class=gb1 style="text-decoration:none"><u>ещё</u> &raquo;</a></nobr></div><div id=guser width=100%><nobr><span id=gbn class=gbi></span><span id=gbf class=gbf></span><span id=gbe><a href="/url?sa=p&pref=ig&pval=3&q=http://www.google.ru/ig%3Fhl%3Dru%26source
часть стер тк длинный, но вполне убедился что работает как надо.

Если групп нету то сотрите цикл после репита и все упоминания про группы.

Рекомендую:

29.10.2010 | последняя редакция: 01.11.2010 |