как записать данные в файл найденные по средствам TRegExpr дело в том что текст перед скобкой и после 'test(.+?)test'; повторяется на странице несколько раз(много раз) записать нужно каждое значение на строчке пугает то что текст перед и после скобки повторяется много раз кто нить что нить подскажет?
Я опять тебя ни*** не понял, но тебе наверно нужно удалять значение, которое спарсил, что бы оно больше не попадалось.
Аналогично... думаю для того чтобы решить твою проблему, нужно конкретно задать вопрос... либо ты прочитать не можешь, либо записать... Либо хз что... =)
Есть на странице вот такие ссылки сайт/страница.пхп?переменная=Значение0& сайт/страница.пхп?переменная=Значение1& сайт/страница.пхп?переменная=Значение2& и т.д.................. Мне нужно спарсить Значение0,Значение1,Значение2 и т.д. Делать это нужно как я понимаю RegExpr так как Pos неудобно потому что мы не знаем длину "значения". Вопрос как мне это сделать на странице же не одно "сайт/страница.пхп?переменная=" и "amp;" их много ну и собственно как это дело всё лучше записать "значение" на строчке отдельной. Надеюсь понятнее выразил суть вопроса Извиняюсь за худую конкретику в моих вопросах Впредь буду стараться более лучше раскладывать всё по полочкам.
В RegExp используй ExecNext(). К примеру вот так (с++) Code: r->Expression="регулярка"; if(r->Exec(result)) { do{ AnsiString temp=r->Match[1]; ... делаем что хотим с нашими данными... } while(r->ExecNext());
RegExp.Expression := 'сайт/страница.пхп\?переменная=(.+?)&'; if RegExp.Exec(tmp.text) then begin repeat str:=RegExp.Match[1]; memo2.Lines.Add(str); until not RegExp.ExecNext; end ; опаздал(
подчёркивает вот это showmessage(RegExp.Match[1]); until not RegExp.ExecNext; а вернее RegExp.Match и вот RegExp.ExecNext выдаёт ошибку что мол они не определены в uses RegExpr подключён Что не так? вот весь код если нужно Code: Form13: TForm13; r :TRegExpr; s :string; implementation {$R *.dfm} procedure TForm13.Button1Click(Sender: TObject); begin s :=IdHTTP1.Get('http://'+Edit1.Text+'/papka/list.php?'); r :=TRegExpr.Create; r.Expression:='"../papka/list.php?uz=(.+?)&"'; if r.Exec(s) then repeat showmessage(RegExp.Match[1]); until not RegExp.ExecNext; end;
не ебисебемозги с регулярками, юзай пос и делит: копируй циклом с "сайт/страница.пхп?переменная=" и удаляй из скопированного после "&". что сложного-то?
r.Expression:='"\.\./papka/list\.php\?uz=(.+?)&"'; и попробуй так: qwe:=RegExp.Match[1]; showmessage(qwe); хз но у меня только так выводит почему-то. var s,str:string; i:integer; begin s:='"../papka/list.php?uz=значение&"'; i:=pos('../papka/list.php?uz=',s)+length('../papka/list.php?uz='); while s<>'&' do begin str:=str+s;inc(i); end; memo1.text:=str; end;
Code: var s,str:string; i:integer; begin s :=IdHTTP1.Get('http://saitt/katalog/list.php?start=30&'); i:=pos('../papka/id.php?u=',s)+length('../papka/id.php?u='); while s[i]<>'&' do begin str:=str+s[i]; inc(i); end; memo1.lines.Add(str); end; в мемо только первое значение после первой вот такой ссылки "'../papka/id.php?u=''" вот такое Memo1 OlegLom OlegLom OlegLom OlegLom OlegLom как этого исправить? а мне нужно чтоб не одно первое а все с таким значением объясняю еще у меня вот такая страница: Code: <./papka/id.php?u=name>eame</a> <./papka/id.php?u=name1>tane1</a> <./papka/id.php?u=name2>pame2</a> <./papka/id.php?u=name3>mame3</a> <./papka/id.php?u=name4>Mame4</a> <./papka/id.php?u=name5>jame5</a> <./papka/id.php?u=name6>qame6</a> Нажимаю на бутон идёт загрузка указанной мной страницы После чего идёт парсинг этой страницы и в мемо я вижу Memo1 name name1 name2 name3 name4 name5 name6 Вот как то так подскажите пжл как реализовать?
Так правильней: Code: Form13: TForm13; r :TRegExpr; s :string; implementation {$R *.dfm} procedure TForm13.Button1Click(Sender: TObject); begin s :=IdHTTP1.Get('http://'+Edit1.Text+'/papka/list.php?'); r :=TRegExpr.Create; r.Expression:='"../papka/list.php?uz=(.+?)&"'; if r.Exec(s) then repeat showmessage([B]r.Match[1][/B]); until not [B]r.ExecNext[/B]; end;