Интересно, есть ли у кого-то еще проблемы с perl 5.14 в ubuntu 12.04, когда дело доходит до отрицания класса символов в Perl.
Учитывая следующий небольшой фрагмент
while(<>) {
print if /[^Dd]an/;
}
Со следующим небольшим входом
Dan
Frank
Steve
daniel
я бы ожидал, что вместо терминала будет напечатано
Frank
Steve
Я получаю только Фрэнк.
Просто интересно, если у кого-то еще была похожая проблема, и выяснил, в чем проблема. Я собираюсь немного поискать и посмотреть, смогу ли я придумать что-нибудь, что я обновлю, если найду что-нибудь
Приветствия
Регулярное выражение
/[^Dd]an/
Действительно не совпадает Steve
. По сути, вы сопоставляете все строки с последовательностью an
, кроме тех, которые начинаются с D
или d
. Я не понимаю, как вы ожидаете, что это будет соответствовать Стиву.
Я думаю, что поведение правильное. Имейте в виду, что отрицание применяется только к персонажам в разделе []
.