从数组元素perl中减去模式匹配

时间:2014-03-12 15:51:40

标签: regex arrays perl pattern-matching subtraction

我编写了一个代码,如果它与特定模式匹配,我可以从数组中的一个元素中减去一个特定值(例如:FP = 0.021)。这是代码:

if ($info =~ /FP=/) {
            my @array1 = split(';', $info);
                if ($array1[$#array1] =~ /=([^.]*)/){
                    my $name1= $-[1];
                    $FPvalue = substr($array1[$#array1], $name1);
                    if ($FPvalue < 0.0001){ 
                        push(@FPvalues,$FPvalue);

其中$ info是一个字符串,其中包含以分号(;)分隔的信息。

我很幸运,&#34; FP = 0.021&#34; element是我的数组中的最后一个元素。但我想知道一种不使用表达式减去它的方法:$ array1 [$#array1]

感谢您的帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

这里你如何解析字符串末尾的字符串中的十进制数:

$str = "asdsa;adsasd;adsasd;FP=0.021";
if($str =~ /=(\d+\.?\d+)$/){
    print $1;
}

答案 1 :(得分:1)

没有样本输入数据很难分辨,但我认为你想要

push @FPvalues, $1 if $info =~ /FP=([\d.]+)/

它的工作原理是在$info中搜索字符串FP=后面跟着一些点和十进制数字。如果找到该模式,则将点和数字部分放入$1并推送到数组上。