Wyrażenie regularne w Delphi

0

Za cholerę nie potrafię wyciągnąć tego:

tutaj+jakaśwartość

z łańcucha:

onClick="FocusCharacter(1, 'tutaj+jakaś_wartość', 2);

W miejscu jedynki może być podstawiona dowolna liczba.

Proszę o pomoc, walcze z tym już cały wieczór.

4

Delphi nie znam, ale regex to w tym przypadku gruba przesada.

Wystarczy, że znajdziesz index pierwszego apostrofa(a do tego na 99% jest gotowa metoda), później drugiego i weźmiesz tekst pomiędzy nimi.

PS.

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.

2
function Parse(var Str:String;const Delimeter:String):String;
var P:Integer;
begin
  P:=Pos(Delimeter,Str);
  if P>0 then
  begin
    Result:=Copy(Str,1,P-1);
    Delete(Str,1,P+Length(Delimeter)-1);
  end
  else
  begin
    Result:=Str;
    SetLength(Str,0);
  end;
end;

wywołanie

Row:='onClick="FocusCharacter(1, ''tutaj+jakaś_wartość'', 2);';
Parse(Row,'''');
Text:=Parse(Row,'''');
0

Kod świąteczny. Z użyciem modułu http://regexpstudio.com/TRegExpr/TRegExpr.html i wpisanego tekstu jaki podałeś do komponentu klasy TMemo. Do tego oldskoolowa wstawka gimbuss++ "skuadnia dla muodych gnieffnych", którzy tak narozrabiali w gimbazie, że czekają pod choinkami na nich tylko rózgi.

Życze wszystkim Wesołych Świąt :) Przy okazji życzę również Wam i sobie aby w nadchądzącym roku aby ludzie (czy zimne koty nawet) zanim tutaj czy gdziekolwiek cokolwiek zapostują. To najpierw do BÓLU (jak wolał komorowski "bulu") sami poszukali rozwiązania na Google, pokombinowali chociaż ciutkę samodzielnie. A dopiero w ostateczności pytali o cokolwiek gdziekolwiek.

W tym wątku oczywiście powyższego "pożądanego zjawiska" zabrakło. Ponieważ pytającemu ani nie chciało się pogooglować za przykładami/dokumentacją regexprów ani nawet w przypadku tak prostego ciągu wejściowego napisać sobie coś na bazie Pos/Copy/Delete. Nie tędy droga. Gdybym był świętym Mikołajem bez wahania dałbym Tobie różgę. I za pewnie nie tylko ja ;P

No ale że są już prawie Święta, to nawet Zimny Kot zje zimny opłatek i go zamroczy do tego stopnia, że TBrain nie jest prawidłowo zainstalowany ;) Potwierdza to jedynie legendę, że żwierzęta mówią w Wigilię ludzkim głosem. A zamroczonym zwierzętom procentami które nie doczekały pasterki trzeba pomóc, tymbardziej że "problem" jak i możliwe rozwiązania są banalne.

//...

uses
  regexpr;

function PomimoNadchodzoncychSwiontUzywajcieMoozguffIKombinujcieSamodzielnieZanimZapytacieNaForumOCokolwiek(BrodaSwientegoMikouaja : string) : string;
var
  ReniferowyRegExpr : TRegExpr;
begin
  Result := '';
  ReniferowyRegExpr := TRegExpr.Create;
  ReniferowyRegExpr.Expression := 'onClick=".+?\x27(.+?)\x27';
  if ReniferowyRegExpr.Exec(BrodaSwientegoMikouaja) then
  begin
    Result := ReniferowyRegExpr.Match[1];
  end;
  ReniferowyRegExpr.Free;
end;

procedure TForm1.Button1Click(Sender : TObject);
begin
  ShowMessage(PomimoNadchodzoncychSwiontUzywajcieMoozguffIKombinujcieSamodzielnieZanimZapytacieNaForumOCokolwiek(WuazimyPrzezKominMemo.Text))
end;

//...

P.S. i nic znaczącego z %%% nie spożywałem, poniważ dzisiaj czeka mnie niestety nocka w pracy. Ale po Wigilii sobie najwyżej odpocznę przy piwku.

0

Panowie ogromne dzięki! Wesołych Świąt i pozdrawiam. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1