TPerlRegEx Delphi 2010
govnoproger.ru > Delphi >
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> »</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 часть стер тк длинный, но вполне убедился что работает как надо.
Если групп нету то сотрите цикл после репита и все упоминания про группы.