1. Perl / Говнокод #6370

    −125

    1. 1
    2. 2
    3. 3
    'aaa' =~ /a(?=)aa/;
     'aaa' =~ /(?=)aaa/;
     'aaa' =~ /aaa(?=)/;

    в ActiveState Perl 5.10.0 build 1003 неожиданно обнаружил грубую ошибку в регулярных выражениях. Конструкция (?=), которая означает "с этого места имеется пустой фрагмент текста" вообще не работает! То же относится к аналогичной конструкции "заглядывания назад" (?<=). Например, не находится соответствие в операторах и т.д. Я пришёл в недоумение, ведь это работало правильно в ActiveState Perl 5.8.7 и в более ранних версиях, которые были установлены у меня прежде.

    Запостил: BlackMonolit, 15 Апреля 2011

    Комментарии (17) RSS

    • а почему это здесь, а не в багрепорте?
      Ответить
    • да-да, направьте вашу энергию на написание гневного письма в активестате, покажите им где раки зимуют
      Ответить
      • раки известно где...
        http://govnokod.ru/6371#comment81835
        Ответить
    • показать все, что скрытоА разгадка одна.
      Перл - говно сам по себе.
      Ответить
    • вы батенька тормоз. пустой лукахед он как бы мачит пустое место. а пустых мест в любой строке несчитано ;)

      RTFM: http://perldoc.perl.org/perlre.html

      учитывая количество проектов которые полузуются PCRE, если вы считаете что нашли там "грубую ошибку" - то скорее всего это наоборот вы грубо ошибаетесь и я бы рекомендовал сначала читать документацию.
      Ответить
    • Я не знаком с перлом, но просто интересно, а какой был ожидаемый результат, и как работает? Я проверил там где мог, и работает, как я и ожидал, т.е. /aaa(?=)/ matches "aaa".
      Ответить
    • >ActiveState Perl
      Это то, что под венду интерпретировали?
      ФТОПКУ!
      Ответить

    Добавить комментарий