2014-04-29 30 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";