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

时间:2017-10-19 09:32:56

标签: regex perl regex-lookarounds

我继承了一些perl 5(5.20)代码,其中包含一个带有运算符的正则表达式?> !.遗憾的是,我一直无法找到有关此运营商所做工作的任何文档,仅在man perlre?>记录在案。

当示例代码中的正则表达式匹配/不匹配时,有人可以向我解释吗?

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

在原始代码中有一个注释,预期的用例是当发电机不是发电机的上下文时匹配,但是,根据我的测试,这不是发生的情况。 注意:代码只关心正则表达式是否匹配,它不处理匹配位置。

2 个答案:

答案 0 :(得分:2)

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

从示例来看,它可能是(?<!power)(负面的背后)......但是如果打算获得“不匹配”,它就无法工作 - 它只是断言字符串“rator”不等于“power”,这总是正确的。做正常事情的正确方法取决于 想要什么,但这不是它。

答案 1 :(得分:1)

可能这是(?!的拼写错误。正如(?>后面跟着文字字符串!power