Perl re负面看后面的可变长度错误

时间:2014-03-09 05:45:03

标签: regex perl

当没有单引号或美元符号前面时,此正则表达式适用于匹配模式'ab_':

/(?<!('|\$))ab_/

但是,如果我尝试在单引号

之前添加一个括号
/(?<!(\['|\$))ab_/

我收到此错误

Variable length lookbehind not implemented in regex;

这个错误是什么意思,有没有办法让第二个例子有效? 由于我不是专家,所以我很可能忽略了一些基本的东西,所以请指出我所遗漏的任何东西。

1 个答案:

答案 0 :(得分:7)

错误意味着在Perl中,lookbehind断言必须具有固定长度模式。 ('|\$)很好,因为模式只匹配长度为1的子字符串,但(\['|\$)可以匹配长度为1的子字符串($)或长度为2的子字符串({{1} })。

在你的情况下,你可以通过使用两个单独的lookbehind来解决这个问题,每个lookbehinds都有一个固定长度的模式,每个情况都要排除一个:

['