Forum Webscript.Ru

Программирование => Perl => Тема начата: Serg31416 от 07 Июля 2008, 10:17:48

Название: Ещё одна ошибка в Perl re
Отправлено: Serg31416 от 07 Июля 2008, 10:17:48
Нашёл ещё одну ошибку в Perl re:

print "Match" if \'ab\' =~ /^a?(?=b)b/;

не находит, а должен бы. ^ можно заменить на \\A, а ? можно заменить на * с тем же результатом.
Это я уже засабмитил на http://bugs.activestate.com/show_bug.cgi?id=78536
 Вот ещё сходные ошибки:

print $& if \'ab\' =~ /a?(?=b)b/;
print $& if \'ab\' =~ /a*(?=b)b/;

печатают b, а должны печатать ab.
 Похоже, что эта ошибка есть во всех версиях и платформах. По крайней мере, в
ActiveState Perl 5.10.0 под Win32 и в 5.8.8 под Debian она есть.
 Мой e-mail cron+c [] cronc.com
Название: Ещё одна ошибка в Perl re
Отправлено: ravshaniy от 10 Июля 2008, 14:47:52
Если это еще одна то где первая ошибка?

? - ноль или один
* - ноль или много

ну как бы что вас смущает?

если бы было
? - один или ноль

тогда бы все работало наверное по другому

просто какой приоритет в выражении так он и ищет