[Регулярные выражения]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Jakeroid, 2 Jan 2011.

  1. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    [Delphi] TRegExpr

    Наткнулся на следующую проблему.
    Есть текст вида:

    Что бы вытащить ЧИСЛА юзаю:
    Что бы вытащить ТЕКСТ юзаю:
    По отдельности работает и то и другое. А вот вместе не могу.
    Пытаюсь с помощью
    Не хочет.
     
    #1 Jakeroid, 2 Jan 2011
    Last edited: 2 Jan 2011
  2. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Не знаю что за ЯП, но для PCRE будет справедливо: если не указать отдельно, то метасимвол "." не включает в себя перевод строки.
     
  3. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    если на пхп, попробуй добавить модификаторы iU, i для регистронезависимости(на всякий случай) а U для минимизации поиска.
     
  4. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    Это TRegExpr для делфи. Автор утверждает что все позаимствовал с Perl'a. Вот мне уже помогли, рабочая регулярка:
     
  5. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    НОВЫЙ ВОПРОС: -> РЕШЕНО(Ответ внизу сообщения)!
    Использую следующий код:
    Code:
    if rExp.Exec(str) then
          begin
            repeat
            temp:= temp + rExp.Match[1] + #13#10 + rExp.Match[2] + #13#10;
            until not rExp.ExecNext;
          end;
    Но в переменную temp попадают только 1-ые значения. То есть все остальные совпадения в строке str по шаблону не добавляются.
    Не могу понять в чем проблема. Регулярка написана правильно. И 100% гарантия что это не единственный текст, по шаблону там еще куча. Но выдерает только первые...

    Решил:
    Как всегда... Пол часа искал ошибку, не мог понять в чем дело. Только задал вопрос на форуме, и сразу нашел ответ. Пропустил жадный квантификатор... РРР!
     
    #5 Jakeroid, 2 Jan 2011
    Last edited: 2 Jan 2011