perl の否定先読みは、大きな文字列 (長さ > 40000、アクティブな perl および cygwin perl、バージョン 5.14) では機能しません。同じコードを試してみましたがmingw perl 5.8.8
、長さが 5000 を超える文字列では機能しなくなりました。
私が使用しているコードは次のとおりです。
my $str = q(A B);
my $pattern = '(A)(?:(?!(X)).)*(B)';
if ( $str =~ m/$pattern/ ) {
print "matched\n";
}
これは、perl の 3 つのバージョンすべてで正常に機能します。しかし、スペースを追加して文字列の長さを増やすと、パターンの一致が停止します。
例:my $str = q(A ...some 50000 spaces... B);
親切に助けてください。