Perl正则表达式修复版本5.8.8

时间:2014-07-24 22:36:48

标签: perl

这是对问题Perl replace nested blocks regular expression

的跟进

我需要使用这个正则表达式来使用Perl版本5.8.8,因为我仍然需要使用5.8.8:

while ( $core =~ /(?is)(?:((?&content))|(?><!--block:(.*?)-->)((?&core)|)<!--endblock-->|(<!--(?:block:.*?|endblock)-->))(?(DEFINE)(?<core>(?>(?&content)|(?><!--block:.*?-->)(?:(?&core)|)<!--endblock-->)+)(?<content>(?>(?!<!--(?:block:.*?|endblock)-->).)+))/g )
{
 print "1:{{$1}}\n2:[[$2]]\n";
}

我收到错误:

Sequence (?&...) not recognized in regex; marked by <-- HERE in m/(?is)(?:((?& <-- HERE content))|(?><!--block:(.*?)-->)((?&core)|)<!--endblock-->|(<!--(?:block:.*?|endblock)-->))(?(DEFINE)(?<core>(?>(?&content)|(?><!--block:.*?-->)(?:(?&core)|)<!--endblock-->)+)(?<content>(?>(?!<!--(?:block:.*?|endblock)-->).)+))/ 

寻找答案,我发现:

The (?<xxx> syntax requires perl 5.10 or above: http://perldoc.perl.org/perl5100delta.html#Named-Capture-Buffers

0 个答案:

没有答案