[英]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.