当没有单引号或美元符号前面时,此正则表达式适用于匹配模式'ab_':
/(?<!('|\$))ab_/
但是,如果我尝试在单引号
之前添加一个括号/(?<!(\['|\$))ab_/
我收到此错误
Variable length lookbehind not implemented in regex;
这个错误是什么意思,有没有办法让第二个例子有效? 由于我不是专家,所以我很可能忽略了一些基本的东西,所以请指出我所遗漏的任何东西。
答案 0 :(得分:7)
错误意味着在Perl中,lookbehind断言必须具有固定长度模式。 ('|\$)
很好,因为模式只匹配长度为1的子字符串,但(\['|\$)
可以匹配长度为1的子字符串($
)或长度为2的子字符串({{1} })。
在你的情况下,你可以通过使用两个单独的lookbehind来解决这个问题,每个lookbehinds都有一个固定长度的模式,每个情况都要排除一个:
['