簡體   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