使用perl从文本文件中提取数字

时间:2017-01-31 07:18:11

标签: regex perl text

我有一个文本文件,其格式为..

  
    

***** yz = 1.4333 ******

         

结果= 3.58e-01

                   

******* ayf = 25.00     **** yz = 1.34
    结果= 3.24e-01

  

我想提取结果和放大器旁边的值。将它推入阵列。

2 个答案:

答案 0 :(得分:0)

您在示例中没有提供更多代码吗?像结果数组的输出?否则有一些事情需要考虑:

  • 正则表达式中的前导空格:这与您的示例不符,因为result从行的开头开始。一般而言,如果您希望在可能出现的空格方面更加灵活,请在相应位置插入\s*
  • 科学数字匹配:如果您希望出现带有负指数的科学记数法以外的数字,则必须以这种方式采用正则表达式。那里有很多例子。

对于扩展代码:

  • 请在每个脚本中使用use strict;use warnings;
  • 使用open的3参数模式和可能的词汇文件处理程序(my $fh而不是FH)。 3参数模式确保您不会忘记指定打开文件的实际模式(读/写等)等。
  • close(FH)文件处理程序,然后将其用于其他文件

例如,不关闭IN2似乎是代码中的一个问题。

答案 1 :(得分:0)

这可能有效:

open my $fh, '<', $filename or die;
my @array;
/result\s*=\s*(\S+)/i and push @array, 0+$1 while <$fh>;    # 0+$1 or just $1
close $fh;