繁体   English   中英

Perl:最大的正则表达式?

[英]Perl: A maximum in regular expressions?

这是我的代码。

#!/usr/bin/perl

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

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

由于某些原因,即使e的数量超过了最大值8,这仍然匹配。如果e的数量超过8,如何用正则表达式返回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)/

您的字符串与表达式匹配,因为它包含六个e。 如果您不想匹配,请更改表达式。 例如,您可以说e的序列不在另一个e的前面和后面:

/(?<!e) e{$six,$eight} (?!e)/x

这些称为否定的前瞻性断言和前瞻性断言。

在这种情况下,量词后面的问号没有任何区别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM