Hum, это отличается от того, как на самом деле работает Perl5.
$ perl -E'
for ("abc", "abdas dfas", "d abc ", "fafabcdef") {
say "$_: ", /((?!abc).)+/ ? "true ($&)" : "false";
}
'
abc: true (bc)
vabdas dfas: true (abdas dfas)
d abc : true (d )
fafabcdef: true (faf)
У него должны быть неявные ^ и \ z.
$ perl -E'
for ("abc", "abdas dfas", "d abc ", "fafabcdef") {
say "$_: ", /^((?!abc).)+\z/ ? "true ($&)" : "false";
}
'
abc: false
abdas dfas: true (abdas dfas)
d abc : false
fafabcdef: false
Те, которые не совпадают, потому что тамнекоторая позиция, которая соответствует /abc/.