正则表达式格式化

时间:2016-01-31 10:39:18

标签: perl formatting

我想要求Perl格式化方面的帮助。我有三行如下:

Function SaveOfflineData Started                                 0012345671  439                                                                              
Offline data not found in BEHAV_DATA for PartyId = 1054          0012345671  439                                                           
Offline data not found in RE_PARTY_LOAN_CONTRACT for PartyId = 1 0012345671  439  

我有三行,我需要过滤第一个文本(把它放在变量中)第二个数字(0012345671 - 把它放在变量中),最后一个ID也将它保存到变量中。但是我无法设置正确的正则表达式来格式化第一个文本字符串。有人知道吗?

1 个答案:

答案 0 :(得分:1)

当您使用正确的工具进行工作时,此问题变得微不足道。事实证明,这项工作的正确工具不是正则表达式 - 它是unpack。有关packunpack的简介,请参阅perlpacktut

use strict;
use warnings;
use Data::Dumper;

while (<DATA>) {
    my @fields = unpack('A65 A12 A*');
    print Dumper(\@fields);
}

__DATA__
Function SaveOfflineData Started                                 0012345671  439
Offline data not found in BEHAV_DATA for PartyId = 1054          0012345671  439
Offline data not found in RE_PARTY_LOAN_CONTRACT for PartyId = 1 0012345671  439

输出:

$VAR1 = [
          'Function SaveOfflineData Started',
          '0012345671',
          '439'
        ];
$VAR1 = [
          'Offline data not found in BEHAV_DATA for PartyId = 1054',
          '0012345671',
          '439'
        ];
$VAR1 = [
          'Offline data not found in RE_PARTY_LOAN_CONTRACT for PartyId = 1',
          '0012345671',
          '439'
        ];