2014-04-29 66 views
0

當正則表達式搜索/[XY]{15,20}[WZ]{10,15}[XY]{15,20}/g的模式/[XY]{15,20}[WZ]{10,15}[XY]{15,20}/g與正則表達式匹配的字符串時,是否有方法解密匹配報告哪個場景?$&perl regexp {min,max} - 哪個場景報告

我試圖避免的組合數學:

[XY]{15}[WZ]{10}[XY]{15} 
[XY]{15}[WZ]{10}[XY]{16} 
[XY]{15}[WZ]{10}[XY]{17} 
... 
[XY]{16}[WZ]{10}[XY]{15} 
[XY]{17}[WZ]{10}[XY]{15} 
... 

從中我也知道被報道了場景。

根據情景我的意思是:[XY]{15}[WZ]{10}[XY]{16}在字符串中是否匹配或者是[XY]{16}[WZ]{10}[XY]{15}

任何意見表示讚賞。

+3

您可以捕獲組並檢查它們的長度。 –

+1

你的意思是*場景*? '@ -' [variable](http://p3rl.org/perlvar)可以幫助你嗎? – choroba

回答

2

由於mpapec已經建議,如果你想確定更多關於它們的信息,你只需要捕獲這些子表達式。

while ($string =~ /(([XY]{15,20})([WZ]{10,15})([XY]{15,20}))/g { 
    my ($whole, $xy1, $wz, $xy2) = ($1, $2, $3, $4); 

    print join(',', map length, ($xy1, $wz, $xy2)), "\n";