Regex Perl:正则表达式的最大值?
这是我的密码Regex Perl:正则表达式的最大值?,regex,perl,expression,max,minimum,Regex,Perl,Expression,Max,Minimum,这是我的密码 #!/usr/bin/perl $str = 'yaeeeeeeeeeeeeeeeeeeeeah'; $six = 6; $eight = 8; if( $str =~ /e{$six,$eight}?/) { print "matches"; } 由于某些原因,即使e的数量超过最大值8,这仍然匹配。如果有超过8个e,如何使用regex return设置为false?通常是它的/( 检查 对于非常糟糕的情况,在同一个字符串中,6-8个e存在于某个地方,但在某个地方 另外,如
#!/usr/bin/perl
$str = 'yaeeeeeeeeeeeeeeeeeeeeah';
$six = 6;
$eight = 8;
if( $str =~ /e{$six,$eight}?/)
{
print "matches";
}
由于某些原因,即使e的数量超过最大值8,这仍然匹配。如果有超过8个e,如何使用regex return设置为false?通常是它的/(
检查
对于非常糟糕的情况,在同一个字符串中,6-8个e存在于某个地方,但在某个地方
另外,如果存在20个e,那么发布的解决方案将不会有帮助
示例:rrrrrrrreeeeeeeee rrrrrrrrrreeeeeeeeeee
在这种情况下,您必须首先展望坏的情况e{9}
,
然后是好的例子e{6,8}
/^(?!.*e{$nine}).*(?<!e)e{$six,$eight}(?!e)/
/^(?。*e{$nine})。*(?您的字符串与表达式匹配,因为它包含六个e。如果不想匹配,请更改表达式。例如,您可以说,e的序列前面没有另一个e,后面没有另一个e:
/(?<!e) e{$six,$eight} (?!e)/x
/(?
这些被称为“消极的向后看”和“向前看”断言
在这种情况下,量词后面的问号没有区别。打赌它没有区别。尝试打印“$&”\n”
应该打印6个e。