这是我的代码。

#!/usr/bin/perl

$str = 'yaeeeeeeeeeeeeeeeeeeeeah';
$six = 6;
$eight = 8;

if( $str =~ /e{$six,$eight}?/)
{
 print "matches";
}


由于某些原因,即使e的数量超过了最大值8,这仍然匹配。如果e的数量超过8,我该如何使用regex返回false?

最佳答案

通常其/(?<!e)e{$six,$eight}(?!e)/

检查http://www.perlmonks.org/?node_id=518444

对于同一字符串中6-8 e确实存在的非常糟糕的情况,
否则,单独存在20个e,发布的解决方案将无济于事。

示例:rrrrrrrreeeeeeerrrrrrrrrrreeeeeeeeeeeeeee

在这种情况下,您必须先找出最坏的情况e{9}
那么好的情况e{6,8}

/^(?!.*e{$nine}).*(?<!e)e{$six,$eight}(?!e)/

关于regex - Perl:最大的正则表达式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27475486/

10-10 18:48