perl 正则表达式 (?>! 运算符的作用是什么?

What does the perl regex (?>! operator do?

我继承了一些 perl 5 (5.20) 代码,其中包含一个带有运算符 ?>! 的正则表达式。不幸的是,我一直找不到关于这个操作员在做什么的任何文档,只有 man perlre ?> 有记录。

当示例代码中的正则表达式 matches/doesn 不匹配时,谁能向我解释一下?

my $text = "powergenerator";
if ($text =~ m/generator(?>!power)/) {
    print "MATCH\n";
} else {
    print "NO MATCH\n";
}

原始代码中有注释,预期的用例是在不是 powergenerator 的上下文时匹配生成器,但是根据我的测试,这不是发生的情况。 注意:代码只关心regex是否匹配,不处理匹配位置。

这可能是 (?! 的拼写错误。因为它是 (?> 后跟文字字符串 !power.

没有这样的运算符。 (?>!power)(?>...)(非回溯)构造,匹配文字字符串 !power.

它可能打算 (?<!power)(负后视),从这个例子来看……但如果意图是得到 "NO MATCH",那也行不通——它只是断言字符串 "rator" 不等于 "power",这始终为真。做似乎想要的事情的正确方法完全取决于想要的东西,但事实并非如此。