[Delphi] "Одноразовое" рег. выражение

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Kuzya, 30 May 2009.

  1. Kuzya

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

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    Здравствуйте. Столкнулся со следующей проблемой. Мне нужно из текста (ответ на http-запрос) выдернуть все совпадения с выражением
    Code:
    <li><h3><a href="(.*)"
    Использую библиотеку RegExpr (regexpstudio.com) я получил следующий код
    Code:
    HResult := idHttp1.Get('http://.....');
    regexptpl := '<li><h3><a href="(.*)"';
      with TRegExpr.Create do try
         Expression := regexptpl;
         ModifierI := true;
         ModifierS := true;
         ModifierG := false;
         if Exec(HResult) then begin
           showmessage(Match[1]);
         end;
        finally Free;
      end;
    
    Но он находит только первое совпадение из всего текста. Оно помещается ячейку 1 массива Match и всё, остальные ячейки пусты. Но совпадений в полученном тексте должно быть около 10. Помню с подобной проблемой сталкивался в php и решил её с использованием preg_match_all вместо preg_match. Покопавшись по документации к используемой библиотеке я ничего не нашёл. Единственное на что обратил внимание - функция ExecNext. Я думал что при каждом вызове она будет искать следующее совпадение, но она тоже зацикливалась на 1-ом свопадении.
    Если кто сталкивался с подобной проблемой, помогите пожалуйста.
     
    #1 Kuzya, 30 May 2009
    Last edited: 30 May 2009
  2. JeDaSe

    JeDaSe Member

    Joined:
    23 May 2009
    Messages:
    31
    Likes Received:
    12
    Reputations:
    0
    а pos(); не проще будет?
    /thread119447.html
     
    #2 JeDaSe, 30 May 2009
    Last edited: 30 May 2009
  3. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Юзай цикл
    Code:
    while not ExecNext...
    Регулярки удобнее.
     
  4. Kuzya

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

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    mailbrush, спасибо!
     
    2 people like this.