Проблема с парсингом

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by astonilya, 19 Aug 2010.

  1. astonilya

    astonilya New Member

    Joined:
    10 Sep 2009
    Messages:
    12
    Likes Received:
    1
    Reputations:
    0
    Помогите плз...
    спарсить вот эти 2 переменные(выделены красным цветом) и знаести их в переменные...

    onclick="play('pbutton562','1','4910','50eefe98')

    Проблема заключается в множестве кавычек и запятых
     
  2. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    C++ Builder. AnsiString + TStringList.
    PHP:
    while(s.Pos("onclick=\"play('pbutton"))
    {
        
    s.Delete(1s.Pos("onclick=\"play('pbutton") + 22 1);
        
        
    s1 ss2 s;
        
    s1.SetLength(s1.Pos("'") - 1);
        
    s2.Delete(1s2.Pos(",")); s2.Delete(1s2.Pos(",")); s2.Delete(1s2.Pos(",") + 1);
        
    s2.SetLength(s2.Pos("'") - 1);
        
        
    sl1->Add(s1); sl2->Add(s2);
    }
     
    2 people like this.
  3. astonilya

    astonilya New Member

    Joined:
    10 Sep 2009
    Messages:
    12
    Likes Received:
    1
    Reputations:
    0
    сори что не написал, но мне нужен код на delphi
     
  4. Artist

    Artist Member

    Joined:
    10 Jul 2010
    Messages:
    89
    Likes Received:
    5
    Reputations:
    0
    Не думал что запятые теперь мешают работать. А кавычки надо заменить на такой код #39 и все станет легче.


    Надо сначала написать на каком языке(Это кажется в правилах раздела сказано)
    Вот код:
    Code:
    var
    p,p1:integer;
    str:string;
    pn,pn1:integer;
    str1:string;
    begin
    {Достаем первую переменную}
    p:=pos('onclick="play('+#39+'pbutton'+#39,Memo1.Text)+23;
    str:=copy(Memo1.Text,p,10);
    p1:=pos(#39,str);
    Delete(str,p1,10);
    {Занесли первую перменную в str}
    {Достаем вторую переменную}
    pn:=pos(#39+','+#39+'1'+#39+','+#39+'4910'+#39+','+#39,Memo1.Text)+14;
    str1:=copy(Memo1.Text,pn,15);
    pn1:=pos(#39,str1);
    Delete(str1,pn1,10);
    Memo1.Lines.Add('Первая переменная='+str+'|Вторая перменная='+str1);
    {Занесли вторую перменную в str1}
    end;
    
    Для первой переменной будет работать 100%.
    Для второй тоже только в этой строчке onclick="play('pbutton562','1','4910','50eefe98')
    так как мне кажется что '1','4910' тоже переменные, для 100% работы нужно больше кода...
     
    1 person likes this.
  5. need_million

    need_million Member

    Joined:
    29 Apr 2010
    Messages:
    158
    Likes Received:
    6
    Reputations:
    0
    скажу логику, а потом в руки учебник или онлайн мануал о работе со строками ну или регулярки.

    в начале приводишь к виду 'pbutton562','1','4910','50eefe98' заменяешь ',' на '
    потом достаешь список все что между одинарными ковычками. ну теперь 0 элемент pbutton, 3-другая переменная
     
  6. ColdLikeIce

    ColdLikeIce New Member

    Joined:
    12 Apr 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    ТС, прочитай вот эту статью http://www.delphi.int.ru/articles/42/

    твое регулярное выражение к статье, наверное, будет такое
    Code:
    pbutton(\d+).+'(A-Za-z0-9]+)'\)
    по крайней мере, я его протестировал - вроде работает =)
     
  7. AlexTheC0d3r

    AlexTheC0d3r Elder - Старейшина

    Joined:
    25 Jul 2008
    Messages:
    388
    Likes Received:
    179
    Reputations:
    18
    :)) 22 - 1
     
  8. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Это чтобы было понятнее. 22 - длина "onclick=\"play('pbutton"