Regex Perl正则表达式:负的lookaheads
我有这个测试文本:Regex Perl正则表达式:负的lookaheads,regex,perl,negative-lookahead,Regex,Perl,Negative Lookahead,我有这个测试文本: cake/app/webroot/js/compiled/shop.js cake/app/webroot/js/compiled/shop.min.js cake/app/webroot/js/good/thing.js 当我尝试这个: /^(?!.*compiled)(?!.*min).*$/ 什么都不匹配。但当我补充说: /^.* 从一开始,它与每行上的某些内容相匹配。(我只希望最后一行匹配。) 我遗漏了什么?您的第一个正则表达式与第三行匹配 my $re = q
cake/app/webroot/js/compiled/shop.js
cake/app/webroot/js/compiled/shop.min.js
cake/app/webroot/js/good/thing.js
当我尝试这个:
/^(?!.*compiled)(?!.*min).*$/
什么都不匹配。但当我补充说:
/^.*
从一开始,它与每行上的某些内容相匹配。(我只希望最后一行匹配。)
我遗漏了什么?您的第一个正则表达式与第三行匹配
my $re = qr/^(?!.*compiled)(?!.*min).*$/;
while(<DATA>) {
chomp;
if (/$re/) {
say 'OK : ', $_;
} else {
say 'KO';
}
}
__DATA__
cake/app/webroot/js/compiled/shop.js
cake/app/webroot/js/compiled/shop.min.js
cake/app/webroot/js/good/thing.js
当您在开头添加
*
时,它匹配整行,然后负前瞻为真,在正则表达式消耗所有字符后没有编译的或最小值,因此匹配为真。它确实选择了最后一行,对吗?
KO
KO
OK : cake/app/webroot/js/good/thing.js